Python 爬虫相关汇总

2019 年 10 月 8 日 计算机与网络安全

一次性付费进群,长期免费索取教程,没有付费教程。

微信群回复公众号:微信群QQ群460500587

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

微信公众号:计算机与网络安全

ID:Computer-network


网络爬虫技术浅析

网络爬虫,可以简单地理解为使用某种编程语言(例如Python语言)按照一定的顺序、规则主动抓取互联网特定信息的程序或者脚本。


Python 爬虫:urllib.request 模块

涉及网络时,必不可少的模块就是urllib了。顾名思义,这个模块主要负责打开URL和HTTP协议之类的。这个模块就是Python 2标准库中的urllib2模块的升级版。


Python 爬虫:logging模块

logging模块,顾名思义就是针对日志的。到目前为止,所有的程序标准输出(输出到屏幕)都是使用的print函数。logging模块可以替代print函数的功能,并能将标准输出输入到日志文件保存起来,而且利用logging模块可以部分替代debug的功能,给程序排错。


Python 爬虫:re模块(正则表达式)

re模块是文件处理中必不可少的模块,主要应用于字符串的查找、定位等。在使用网络爬虫时,即使没有爬虫框架,re模块配合urllib模块也可以完成简单的爬虫功能。先来看看所谓的正则表达式,以下是Python支持的正则表达式元字符和语法。


Python 爬虫:sys模块(系统参数获取)

sys模块,顾名思义就是跟系统相关的模块,这个模块的函数方法不多。最常用的就只有两个。sys.argv和sys.exit。sys.argv返回一个列表,包含了所有的命令行参数;sys.exit则是退出程序,再就是可以返回当前系统平台。


Python 爬虫:time模块(获取时间信息)

Python中的time模块是跟时间相关的模块。这个模块用得最多的地方可能就是计时器了。


Python 爬虫:Scrapy 选择器(XPath和CSS)

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。


Python 爬虫:Scrapy 实例(一)

从这个项目可以看出,Scrapy爬虫只需要顺着思路照章填空就可以了。如果需要的项比较多,获取内容的网页源比较复杂或者不规范,可能会稍微麻烦点,但处理起来基本上都是大同小异的。与re爬虫相比,越复杂的爬虫就越能体现Scrapy的优势。


Python 爬虫:Scrapy 实例(二)

做个所需项目多一点的爬虫,并将爬虫的结果以多种形式保存起来。


Python 爬虫:Scrapy 实例(三)

从网站上获取免费的代理服务器。使用Scrapy获取代理服务器后,一一验证哪些代理服务器可用,最终将可用的代理服务器保存到文件。


Python 爬虫:Scrapy 实例(四)

使用得到的代理来爬取网站内容,目标站点就定为一个笑话网站糗事百科。

Python 爬虫:爬虫攻防

对于一般用户而言,网络爬虫是个好工具,它可以方便地从网站上获取自己想要的信息。可对于网站而言,网络爬虫占用了太多的资源,也没可能从这些爬虫获取点击量,增加广告收入。据有关调查研究证明,网络上超过60%以上的访问量都是爬虫造成的,也难怪网站方对网络爬虫恨之入骨,“杀”之而后快了。


网站方采取种种措施拒绝网络爬虫的访问,而网络高手们则毫不示弱,改进网络爬虫,赋予它更强的功能、更快的速度,以及更隐蔽的手段。在这场爬虫与反爬虫的战争中,双方的比分交替领先,最终谁会赢得胜利,大家将拭目以待。


Python 爬虫:Beautiful Soup 解析器

网络爬虫最终的目的就是过滤选取网络信息,因此最重要的部分就是解析器了。解析器的优劣决定了网络爬虫的速度和效率。Beautiful Soup除了支持Python标准库中的HTML解析器外,还支持一些第三方的解析器。


Python 爬虫:Beautiful Soup 实例(一)

经常在网上追剧,偶尔也在百度贴吧上看看美剧贴,可又比较懒,天天登录贴吧查看贴子觉得很麻烦。干脆就写个爬虫让它自动爬内容好了,有空就看看哪些帖子回复了,又有哪些新贴。这里以百度贴吧里的“权利的游戏吧”为例。


Python 爬虫:Beautiful Soup 实例(二)

在国内,唯一能合法暴富的方法似乎只有彩票中奖了。虽然人人都知道中奖的概率很低,但希望总是存在的。中奖的号码虽然无法直接推算出来,但根据概率计算将中奖的概率稍微调大点那还是可能的。在进行概率计算前要做的就是收集数据,好在中国福利彩票并不禁止收集数据进行概率计算。如何计算概率不是本文的内容,这里只负责将数据收集后存入到数据库中。


Python 爬虫:Beautiful Soup 实例(三)

使用bs4爬虫获取起点中文网所有的完本小说信息,并将其保存到MySQL中去。


Python 爬虫:Beautiful Soup 实例(四)

影视网站会每天都有新的电影上架,限于页面的篇幅,每页显示的电影有限。如果想找一部心仪的电影恐怕得翻遍整个网站,当然也可以使用百度的高级搜索和网站自身的搜索,但最方便的还是自己写个爬虫,每天让它爬一次,就可以知道有什么新电影上架了。


Python 爬虫:Beautiful Soup 实例(五)

既然要反反爬虫,那就要反个彻底。在Scrapy里曾提过反爬虫的运行机制,基本上就是通过IP、headers来锁定爬虫用户,然后进行封锁(用验证码、验证图案的不在讨论范围中)。Scrapy使用的是随机跳转proxy和headers的方法对付反爬虫。这里也是如此(反反爬虫的手段远不止这些,比如使用专门网站爬虫、分布式爬虫都可以。个人用户没什么特殊要求,做到这一步就差不多了)。


Python 爬虫:Mechanize 安装与测试

Mechanize是Python的一个模块,用于模拟浏览器。Mechanize的易用性和实用性比较平衡,功能强大而又简单易用。


Python 爬虫:Mechanize 实例(一)

使用urllib2可以比较方便地处理那些无须验证码的登录页面,不过使用Mechanize登录更加方便。


Python 爬虫:Mechanize 实例(二)

有些网站或论坛为了防止暴力破解,在登录框设置了一个验证码。有坚固的盾就有锐利的矛,目前针对验证码的解决方案可谓是千奇百怪。有些方案的确有效,但不具备普遍性。考虑到爬虫所需要的只是数据,完全可以绕过验证码,直接使用Cookie登录就可以了。

Python 爬虫:Selenium 安装与测试

Python网络爬虫中最麻烦的不是那些需要登录才能获取数据的网站,而是那些通过JavaScript获取数据的站点。Python对JavaScript的支持不太好。想用Python获取网站中JavaScript返回的数据,唯一的方法就是模拟浏览器了。这个模拟浏览器跟Mechanize模块稍有不同,Mechanize模块并不支持JavaScript,所以这里需要一款可以模拟真实浏览器的模块——Selenium模块。


Python 爬虫:Selenium&PhantomJS抓取数据

Selenium和PhantomJS配合,可以模拟浏览器获取包括JavaScript的数据。不单要获取网站数据,还需要过滤出“有效数据”。Selenium本身带有一套自己的定位过滤函数。它可以很方便地从网站返回的数据中过滤出所需的“有效数据”。


Python 爬虫:Selenium&PhantomJS 实例(一)

用Selenium&PhantomJS完成的网络爬虫,最适合使用的情形是爬取有JavaScript的网站,但用来爬其他的站点也一样给力。在Scrapy爬虫中曾爬取过代理服务器的例子,这里再以Selenium&PhantomJS爬取代理服务器为示例,比较两者有什么不同。


Python 爬虫:Selenium&PhantomJS 实例(二)

Selenium&PhantomJS可以说是专为JavaScript而生的。本文学习使用Selenium&PhantomJS获取JavaScript返回的数据。一般来说,网站上用JavaScript返回数据,主要是为了美观,第二个目的估计就是增加爬虫的难度了。


Python 爬虫:Pyspider 安装与测试

Pyspider爬虫框架是一个由国人设计开发的Python爬虫框架。与其他爬虫框架不同的是Pyspider不需要任何编辑器或者IDE的支持。它直接在Web界面,以浏览器来编写调试程序脚本。在浏览器上运行、起停、监控执行状态、查看活动历史、获取结果。Pyspider支持MySQL(MariaDB)、MongoDB、SQLite等主流数据库,支持对JavaScript的页面抓取(也是靠的PhantomJS的支持),重要的是它还支持分布式爬虫的部署,是一款功能非常强大的爬虫框架。


Python 爬虫:Pyspider 实例(一)

Pyspider爬虫框架上手比较简单,即使没有使用过其他的爬虫框架,只要略通Python,也可以很方便地创建爬虫。写一个Pyspider爬虫,选择一个最简单的目标,即爬取Youku影视中的热剧榜单。


Python 爬虫:Pyspider 实例(二)

编写一个完整的“纯粹的”Pyspider项目。选一个简单的项目,在电影下载网站爬取所有的欧美影片的下载地址。


Python 爬虫:Pyspider 实例(三)

在使用爬虫抓取有效数据时,有些网站用Python并不能直接获取数据。有的是需要指定User-Agent的信息(Python默认会声明自己为Python脚本),有的是需要cookie数据,还有的网站因为一些缘故无法直接访问的还需要加上代理,这时就需要在Pyspider中添加、修改headers数据加上代理,然后向服务器提出请求。相比Scrapy而言,Pyspider修改headers,添加代理更加方便简洁。毕竟Scrapy还需要修改中间件,而Pyspider更加类似bs4,直接在源码中修改就可以达到目的。


Python 爬虫:防止爬虫IP被禁

在使用爬虫技术时,需要考虑怎么对付反爬虫技术。


Python 爬虫:在爬虫中使用Cookies

简单的爬虫基本上就是直来直去地从静态页面获取数据、清洗数据,几乎都是在Request的headers里做手脚。稍微复杂一点的爬虫,则是通过伪造Cookies或者使用浏览器内核从网站获取数据。到这一步就差不多把爬虫获取数据的路子走到头了。非要更进一步,那就只有使用代理池轮询这种终极手段了。


微信公众号:计算机与网络安全

ID:Computer-network


【推荐书籍】
登录查看更多
2

相关内容

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Python 自然语言处理(NLP)工具库汇总
数据挖掘入门与实战
7+阅读 · 2017年9月25日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
A Survey on Deep Learning for Named Entity Recognition
Arxiv
26+阅读 · 2020年3月13日
Arxiv
35+阅读 · 2019年11月7日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Arxiv
9+阅读 · 2019年4月19日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
6+阅读 · 2018年1月14日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
相关资讯
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Python 自然语言处理(NLP)工具库汇总
数据挖掘入门与实战
7+阅读 · 2017年9月25日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
相关论文
A Survey on Deep Learning for Named Entity Recognition
Arxiv
26+阅读 · 2020年3月13日
Arxiv
35+阅读 · 2019年11月7日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Arxiv
9+阅读 · 2019年4月19日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
6+阅读 · 2018年1月14日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员