python爬虫笔记-持续更新
2018-01-26 17:06
281 查看
爬虫主要分为两个部分,第一个是网页界面的获取,第二个是网页界面的解析;爬虫的原理是利用代码模拟浏览器访问网站,与浏览器不同的是,爬虫获取到的是网页的源代码,没有了浏览器的翻译效果。
这里我们使用urllib2进行网站页面的获取;首先导入urllib2模块包
import urllib2
调用urllib2中的urlopen方法链接网站,代码如下repr=urllib2.urlopen("XXXXXX"),XXXXXX代表的是网站名称。
repr = urllib2.urlopen("http://www.baidu.com")
得到网站的响应之后,然后就是将页面的源代码读取出来,调用read方法
html=repr.read()
将自己想要的数据从html界面源代码中解析出来,解析界面的模块包有很多,原始的re
import re
进行利用re进行搜索,这里我有使用正则表达式
url = re.search(r'<img hidefocus="true" src="(.*?)".*?',html).group(1)
打印除url
print url
url管理器:用来管理将要抓取的url和已经抓取过的
-防止重复抓取,防止循环抓取
-添加新的url到待爬取集合中,判断待添加url是否在容器中
-判断是否有待爬取url,获取待爬取url,将url从待爬取移动到已爬取
--存储1-内存中包含待爬取url集合set()和已爬取url集合set(),可自动去重
--存储2-关系型数据库中mysql中包含表urls(url,is_crawled)
--存储3-缓存数据库中redis包含待爬取url集合set和已爬取的url集合set
网页下载器:urllib2
--核心组件,将互联网上url对应的网页下载到本地的工具
--urllib2 为python官方基础模块
--requests 为第三方包更强大
实例1:import urllib2 --导入包
response = urllib2.urlopen("www.baidu.com") --请求
print response.getcode() --获取状态码,如果是200代表成功
response.read()
实例2:import urllib2 --导入包
request = urllib2.Request(url) --创建request对象
request.add_data('a',1) --添加数据
request.add_header('User-Agent','Mozilla/5.0')--添加header,伪装成mozilla浏览器
response = urllib2.urlopen(request)发送请求获取结果
特殊情景
1-需要登陆的网站则用 HTTPCookieProcessor
2-需要代理的网站则用 ProxyHandler
3-需要https协议登陆网站则用HTTPSHandler
4-需要自动跳转网站则用HTTPRedirectHandler
先调用opener = urllib2.build_opener(1/2/3/4)
urllib2.install_opener(opener)
import urllib2, cookielib
cj = cookielib.CookieJar() --创建cookie容器
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))--创建opener
urllib2.install_opener(opener) --安装opener
response = urllib2.urlopen("http://www.baidu.com/")发送请求获取结果
网页解析器:beautifulsoup
--从网页中提取有价值数据的工具,包括数据和新的url
1-正则表达式 模糊匹配
2-官方 html.parser 结构化解析
3-第三方 BeautifulSoup 强大结构化解析,包括2/3/4 功能
4-第三方 lxml 结构化解析
beautifulsoup语法
创建beautifulsoup对象--》搜索节点find_all,find--》访问节点名称,属性,文字
爬虫:一段自动抓取互联网信息的程序
从一个url出发,自动提取关联url的程序
价值:互联网数据,为我所用,分析爬取的数据
做成爆笑故事的app,对比图书价格,新闻聚合阅读器
爬虫调度端--》url管理器--》网页下载器--》网页解析器--》价值数据
抓取百度百科
目标地址 http://baike.baidu.com/item/Python
links = soup.find_all('a', href=re.compile(r"/item/(.*)"))
使用的python3.5,在window下,我在调试的时候遇到里编码出错的问题,找了很久,终于解决里。这此分享出来,给可能遇到同样问题的同学。 当把抓取出来的内容显示在网页上时,这个地方是出错的关键点。在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现问题。应写为: fout = open('output.html','w',encoding='utf-8')
同时在html中声明<meta charset='utf-8'>
这里我们使用urllib2进行网站页面的获取;首先导入urllib2模块包
import urllib2
调用urllib2中的urlopen方法链接网站,代码如下repr=urllib2.urlopen("XXXXXX"),XXXXXX代表的是网站名称。
repr = urllib2.urlopen("http://www.baidu.com")
得到网站的响应之后,然后就是将页面的源代码读取出来,调用read方法
html=repr.read()
将自己想要的数据从html界面源代码中解析出来,解析界面的模块包有很多,原始的re
import re
进行利用re进行搜索,这里我有使用正则表达式
url = re.search(r'<img hidefocus="true" src="(.*?)".*?',html).group(1)
打印除url
print url
url管理器:用来管理将要抓取的url和已经抓取过的
-防止重复抓取,防止循环抓取
-添加新的url到待爬取集合中,判断待添加url是否在容器中
-判断是否有待爬取url,获取待爬取url,将url从待爬取移动到已爬取
--存储1-内存中包含待爬取url集合set()和已爬取url集合set(),可自动去重
--存储2-关系型数据库中mysql中包含表urls(url,is_crawled)
--存储3-缓存数据库中redis包含待爬取url集合set和已爬取的url集合set
网页下载器:urllib2
--核心组件,将互联网上url对应的网页下载到本地的工具
--urllib2 为python官方基础模块
--requests 为第三方包更强大
实例1:import urllib2 --导入包
response = urllib2.urlopen("www.baidu.com") --请求
print response.getcode() --获取状态码,如果是200代表成功
response.read()
实例2:import urllib2 --导入包
request = urllib2.Request(url) --创建request对象
request.add_data('a',1) --添加数据
request.add_header('User-Agent','Mozilla/5.0')--添加header,伪装成mozilla浏览器
response = urllib2.urlopen(request)发送请求获取结果
特殊情景
1-需要登陆的网站则用 HTTPCookieProcessor
2-需要代理的网站则用 ProxyHandler
3-需要https协议登陆网站则用HTTPSHandler
4-需要自动跳转网站则用HTTPRedirectHandler
先调用opener = urllib2.build_opener(1/2/3/4)
urllib2.install_opener(opener)
import urllib2, cookielib
cj = cookielib.CookieJar() --创建cookie容器
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))--创建opener
urllib2.install_opener(opener) --安装opener
response = urllib2.urlopen("http://www.baidu.com/")发送请求获取结果
网页解析器:beautifulsoup
--从网页中提取有价值数据的工具,包括数据和新的url
1-正则表达式 模糊匹配
2-官方 html.parser 结构化解析
3-第三方 BeautifulSoup 强大结构化解析,包括2/3/4 功能
4-第三方 lxml 结构化解析
beautifulsoup语法
创建beautifulsoup对象--》搜索节点find_all,find--》访问节点名称,属性,文字
爬虫:一段自动抓取互联网信息的程序
从一个url出发,自动提取关联url的程序
价值:互联网数据,为我所用,分析爬取的数据
做成爆笑故事的app,对比图书价格,新闻聚合阅读器
爬虫调度端--》url管理器--》网页下载器--》网页解析器--》价值数据
抓取百度百科
目标地址 http://baike.baidu.com/item/Python
links = soup.find_all('a', href=re.compile(r"/item/(.*)"))
使用的python3.5,在window下,我在调试的时候遇到里编码出错的问题,找了很久,终于解决里。这此分享出来,给可能遇到同样问题的同学。 当把抓取出来的内容显示在网页上时,这个地方是出错的关键点。在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现问题。应写为: fout = open('output.html','w',encoding='utf-8')
同时在html中声明<meta charset='utf-8'>
相关文章推荐
- Python学习笔记——持续更新
- Python数据处理pandas、numpy等第三方库函数笔记(持续更新)
- Python初学笔记——琐碎知识,based on 2.7.3,持续更新中
- Python学习笔记(持续更新)
- 【python】linux下自制简易爬虫开发总结(持续更新中)
- Python开发实战学习笔记(持续更新)
- Python爬虫问题汇总(持续更新)
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
- [置顶] 【Python学习笔记】-Python思维导图合集【持续更新】
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
- 【Python】【学习笔记】持续更新
- 持续更新:Python学习笔记
- Python--爬虫--坑--持续更新中
- Python学习笔记【持续更新】
- Python学习笔记(持续更新中)
- Python 爬虫(持续更新)
- Python基础笔记(持续更新)
- [Python] Python学习笔记之常用模块总结[持续更新...]
- python笔记(持续更新)