'''
Created on 2017年4月5日 @author: Admin
''' import requests
from bs4 import BeautifulSoup as bsp # 网站链接
site = 'http://www.runoob.com'
lineNo = 1 class Movie: def __init__(self, name, url):
self.name = name
self.url = url def __str__(self):
return '%s,\t%s分,\t%s' % (self.name, self.url) __repr__ = __str__ def getSoup(url):
r = requests.get(url)
# r.encoding = 'gb18030'
return bsp(r.text, "html.parser") # 解析指定url,获取其中指定内容
def filterMovie(url):
resultList = []
   # url处理,注意页面的编码集
soup = getSoup(url)
# 查找所有target=_top的a标签
atags = soup.find_all('a', target='_top')
for atag in atags:
     # 取到指定a标签的title属性
titleA = atag['title']
if atag is not None:
try:
          # 根据取到的href属性,拼接上页面域名 获得完整的跳转url
url = site + atag['href']
print('url:', url)
print('title:', titleA)
          # 根据主方法里面 _init_ 中定义的内容,将获取到的字段进行组合,然后放到集合中
movie = Movie(titleA, url)
resultList.append(movie)
except:
print('error !!')
return resultList # 根据传入的结果结合 按照指定格式保存到 文本文件中
def saveInfo(atagList):
# 注意指定编码,否则输入到txt文件的时候会乱码
fileObj = open('vueJS.txt', 'a',encoding='utf8')
for atag in atagList:
atagName = str(atag.name)
print('url info:', atagName)
global lineNo
fileObj.write('(' + str(lineNo) + ') ' + atagName )
fileObj.write('\t')
fileObj.write(atag.url)
fileObj.write(
'————————————————————————————————————————————————————————————————————————————————————————————————')
fileObj.write('\n')
lineNo += 1
fileObj.close() # 获取到根据url整理出的一个结果集合,然后将结果集合保存的物理文件中
def getPageResource(url):
  
resultList = filterMovie(url)
if len(resultList) > 0:
saveInfo(resultList)

# 方法入口,定义一个页面url,然后去解析
if __name__ == '__main__':
url = 'http://www.runoob.com/vue2/vue-tutorial.html'
getPageResource(url)

python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出的更多相关文章

  1. Java 爬虫(获取指定页面中所有的邮箱地址)

    import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.In ...

  2. objectARX 获取指定图层上所有实体ID

    2015-12-17 //获取指定图层上所有实体ID AcDbObjectIdArray GetAllEntityId(const TCHAR* layername) { AcDbObjectIdAr ...

  3. python模块之HTMLParser抓页面上的所有URL链接

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParse ...

  4. php获取指定文件夹中文件名称

    /** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...

  5. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  6. python爬虫3——获取审查元素(板野友美吧图片下载)

    测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...

  7. Python爬虫 爬取Web页面图片

    从网页页面上批量下载jpg格式图片,并按照数字递增命名保存到指定的文件夹 Web地址:http://news.weather.com.cn/2017/12/2812347.shtml 打开网页,点击F ...

  8. python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

    1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...

  9. js禁用页面上右键菜单、选中和复制

    有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...

随机推荐

  1. GlusterFS分布式文件系统的使用

    glusterfs是一款开源的分布式文件系统. 它具备高扩展.高可用及高性能等特性,由于其无元数据服务器的设计,使其真正实现了线性的扩展能力,使存储总容量可轻松达到PB级别,支持数千客户端并发访问. ...

  2. 记一次mybatis bindingexception 问题排查

    看到的错误信息如出一辙都是这样的:Method threw 'org.apache.ibatis.binding.BindingException' exception.Invalid bound s ...

  3. 毕设记录(ajax第一次请求失败,之后成功的问题)

    解决方法:将button标签的type属性改为button,而不是submit,将会解决此问题,至于原因,,,还是没太搞清楚..

  4. 个人信息——头像更换(拍照或相册上传)~ 微信小程序

    微信小程序中 在用户信息中关于用户头像更换(拍照或相册上传)功能实现. 图像点击触发事件: <image src='{{personImage}}' bindtap='changeAvatar' ...

  5. 微信和QQ内置浏览器为什么老是弹停止访问该网页,微信域名被屏蔽的解决办法

    近来很多商家开始重视域名防封的技术了,为什么呢,因为实在是封怕了.三天两头就得去换域名,换域名是小事,用户流失就是大事了,直接跟利益挂钩的.那么域名防封技术究竟有多重要呢?又该如何实现域名防封呢?下面 ...

  6. QT:QHash的使用

    QHash<QPointF, QVector<float>> data; 此时会报错说没有声明QPointF的Key类型 需要我们手动实现一个函数 static uint qH ...

  7. HTML的块级元素和行内元素

    行内元素一般是内容的容器,而块级元素一般是其他容器的容器.一般情况下,行内元素只能包含内容或者其它行内元素,宽度和长度依据内容而定,不可以设置,可以和其它元素和平共处于一行:而块级元素可以包含行内元素 ...

  8. Oracle提取中文字符串拼音首字母函数

    通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母. 效果1,获取拼音简码: 效果2,获取姓名首字母: 创建函数: /* 获取拼音简码函数 */ CREATE ...

  9. 软工作业(JAVA)

    github传送门:https://github.com/hhg52516/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  10. mybatis源码解析之Configuration加载(二)

    概述 上一篇我们讲了configuation.xml中几个标签的解析,例如<properties>,<typeAlises>,<settings>等,今天我们来介绍 ...