python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出
'''
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爬虫初级--获取指定页面上的菜单名称以及链接,然后导出的更多相关文章
- Java 爬虫(获取指定页面中所有的邮箱地址)
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.In ...
- objectARX 获取指定图层上所有实体ID
2015-12-17 //获取指定图层上所有实体ID AcDbObjectIdArray GetAllEntityId(const TCHAR* layername) { AcDbObjectIdAr ...
- python模块之HTMLParser抓页面上的所有URL链接
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParse ...
- php获取指定文件夹中文件名称
/** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- python爬虫3——获取审查元素(板野友美吧图片下载)
测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...
- Python爬虫 爬取Web页面图片
从网页页面上批量下载jpg格式图片,并按照数字递增命名保存到指定的文件夹 Web地址:http://news.weather.com.cn/2017/12/2812347.shtml 打开网页,点击F ...
- python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...
- js禁用页面上右键菜单、选中和复制
有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...
随机推荐
- Matlab的BP神经网络工具箱及其在函数逼近中的应用
1.神经网络工具箱概述 Matlab神经网络工具箱几乎包含了现有神经网络的最新成果,神经网络工具箱模型包括感知器.线性网络.BP网络.径向基函数网络.竞争型神经网络.自组织网络和学习向量量化网络.反馈 ...
- 【C/C++】C++11 Lambda
Lambda C++11 中 lambda 是一个匿名函数对象 最简形式 []{ cout << "lambda" << endl; }(); // pri ...
- Java IO编程全解(四)——NIO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7793964.html 前面讲到:Java IO编程全解(三)——伪异步IO编程 NIO,即New I/O,这 ...
- css布局:左边固定宽度,右边自适应;右边固定宽度,左边自适应
左边固定宽度,右边自适应 浮动布局的方法 <section class="container homeSection" id="mainSection"& ...
- MySql数据库通过idb和frm恢复
简单粗暴 恢复user表 1.先建立和之前user表一样的表结构.就是执行create table user .... ,执行完,数据库目录下就会建立user.ibd文件(当然还有其他的) 2.执行 ...
- 面试北京XX科技总结
1 面试时间与地点 面试时间:2019年1月17号,面试地点:北京. 2 公司概况 开发的产品是集团内部使用,开发的语言ts脚本语言.目前开发团队15人 ...
- As The End of The Year Approaches,The Weighted Blanket Season Begins
Weight blankets are well known for anxiety, insomnia, depression and so on. It is physical therapy, ...
- WinHex18.4算法分析
经过分析,注册码分为六个部分: Name: "xxx" Addr1: "yyy" Addr2: "zzz" 这三个字符不代表长度 Key1: ...
- React 的坑
MemoryRouter 会缓存组件,导致有时候 componentDidMount 不会执行
- Android Studio之SVN打分支、切换分支及合并分支
1.打分支: 右击项目--Subversion--Branch or Tag 点击OK,分支就创建成功了,接下来我们切换到分支v2 2.切换分支: 右击项目--Subversion--Update D ...