文章摘要:什么是爬虫框架
Python爬虫采用框架主要是便于管理以及扩展,主要有Scrapy、PySpider、Crawley、Port […]
Python爬虫采用框架主要是便于管理以及扩展,主要有Scrapy、PySpider、Crawley、Portia、Newspaper等。以下是关于python爬虫框架有哪些的具体介绍。
Python有哪些爬虫框架
1.Scrapy。Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
2.PySpider。PySpider,一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
3.Crawley。Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
4.Portia。Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
5.Newspaper。Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。作者从requests库的简洁与强大得到灵感,使用python开发的可用于提取文章内容的程序。支持10多种语言并且所有的都是unicode编码。
6.Beautiful Soup。Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。BeautifulSoup会帮你节省数小时甚至数天的工作时间。这个我是使用的特别频繁的。在获取html元素,都是bs4完成的。
7.Grab。Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。
Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。
8.Cola。Cola是一个分布式的爬虫框架,对于用户来说,需要编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。
9.selenium。Selenium 是自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个 Selenium 的插件,可以方便地实现Web界面的测试. Selenium 支持浏览器驱动。
Selenium支持多种语言开发,比如 Java,C,Ruby等等,PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与 Python的对接,Python 进行后期的处理。
10.Python-goose框架。Python-goose框架可提取的信息包括:文章主体内容;文章主要图片;文章中嵌入的任何Youtube/Vimeo视频;元描述;元标签。
常见的反爬虫技术有哪些
1.通过user-agent来控制访问。user-agent能够使服务器识别出用户的操作系统及版本、cpu类型、浏览器类型和版本。很多网站会设置user-agent白名单,只有在白名单范围内的请求才能正常访问。
所以在我们的爬虫代码中需要设置user-agent伪装成一个浏览器请求。有时候服务器还可能会校验Referer,所以还可能需要设置Referer(用来表示此时的请求是从哪个页面链接过来的)。
2.通过IP来限制。当我们用同一个ip多次频繁访问服务器时,服务器会检测到该请求可能是爬虫操作。
因此就不能正常的响应页面的信息了。当然这种反爬虫技术可以通过使用IP代理池来反反爬虫。网上就有很多提供代理的网站。
3.设置请求间隔。一般爬虫抓取网站时会制定相应的爬虫策略,但是有些恶意的爬虫会不间断的工具某个网站,面对这种情况,我们可以通过设计请求间隔来实现反爬虫,避免在爬虫短时间内大量的访问请求影响网站的正常运行。
4.自动化测试工具Selenium。Web应用程序测试的Selenium工具。该工具可以用于单元测试,集成测试,系统测试等等。
它可以像真正的用户一样去操作浏览器(包括字符填充、鼠标点击、获取元素、页面切换),支持MozillaFirefox、Google、Chrome、Safari、Opera、IE等等浏览器。
5.参数通过加密。某些网站可能会将参数进行某些加密,或者对参数进行拼接发送给服务器,以此来达到反爬虫的目的。这个时候我们可以试图通过js代码,查看破解的办法。或者可以使用PhantomJS,PhantomJS是一个基于Webkit的无界面(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。
6.通过robots.txt来限制爬虫。robots.txt是一个限制爬虫的规范,该文件是用来声明哪些东西不能被爬取。如果根目录存在该文件,爬虫就会按照文件的内容来爬取指定的范围。
如何高效学习Python爬虫技术
1.学Python网络爬虫基础知识。学Python网络爬虫时先了解Python基本常识,变量、字符串、列表、字典、元组、操控句子、语法等,把基础打牢,在做案例时能知道运用的是哪些知识点。此外还需求了解一些网络请求的基本原理、网页结构等。
2.看Python网络爬虫视频教程学习。看视频或找一本专业的网络爬虫书本《用Python写网络爬虫》,跟着视频学习爬虫代码,多敲代码敲,弄懂每一行代码着手亲身实践,边学习边做才能学的更快。
很多人有误区,觉得自己会不愿意实操,看懂和学会是两个概念,真正操作的时候才是检验知识的有效途径,实操时漏洞百出,要坚持经常敲代码找感觉。
开发建议选Python3,2020年Python2中止保护,Python3是主流。IDE选择pycharm、sublime或jupyter等,小编推荐运用pychram,有些相似Java中的eclipse很智能。
浏览器学会运用 Chrome 或许 FireFox浏览器去检查元素,学会运用进行抓包。了解干流的爬虫和库,如urllib、requests、re、bs4、xpath、json等,常用的爬虫结构scrapy是必需掌握的。
3.进行实操练习。具备爬虫思想,独立设计爬虫体系,找一些网站做操练。静态网页和动态网页的抓取战略和办法需求把握,了解JS加载的网页,了解selenium+PhantomJS模仿浏览器,知道json格局的数据该怎样处理。
网页POST请求,要传入data参数,而且这种网页一般是动态加载的,需求把握抓包办法。如果想进步爬虫功率,就得考虑运用多线程,多进程协程或分布式操作。
4.学习数据库基础应对大规模数据存储。爬回来的数据量小时,可用文档的形式来存储,数据量大就行不通了。因此要掌握一种数据库,学习目前比较主流的MongoDB。方便存储一些非结构化的数据,数据库知识非常简单,主要是数据入库、进行提取,在需要的时候再学习就行。