首页 > 编程知识 正文

python爬虫环境spider,pycharm和python区别

时间:2023-05-03 17:10:37 阅读:55303 作者:1783

了解python网络爬虫python爬虫环境和爬虫介绍爬虫浏览页面的基本流程

web爬虫模拟了浏览器发送请求并返回响应结果的过程。

爬行动物概念

网络爬虫,也称为网络蜘蛛、网络机器人,是自动下载网页的计算机程序或自动脚本。

爬行动物就像蜘蛛一样在网上沿着URL的线爬行,下载每个URL指向的页面,分析页面的内容。

爬行动物原理

(1)通用网络爬虫

典型的网络爬虫,也称为全网爬虫,其目标从一系列种子URL扩展到整个网络。 该爬虫适合为搜索引擎搜索广泛的主题,主要供搜索引擎和大型Web服务提供商使用。

深度优先策略:按从低到高的顺序依次访问下一级网页的链接,直到无法再深为止。

广度优先策略:根据web内容的目录层次的深度爬行。优先爬取较浅层次的页面同一层的所有页面爬完后,爬行动物将进入下一层。

网络爬虫一般成本高,范围广。

)2)聚焦网络爬虫

聚焦网络爬虫又称主题网络爬虫,其最大特点是只选择性爬行与预设主题相关的页面。

基于内容评估的蠕变策略:该策略以用户输入的查询词为主题,并且被认为是包含查询词的页面或与主题有关的页面。

基于链接结构评估的爬行策略:此策略使用包含许多结构信息的半结构化文档网页来评估链接的重要性。 其中一种广泛使用的算法是PageRank算法

基于增强学习的爬行策略:该策略将增强学习引入到聚焦爬虫中,使用贝叶斯分类器对超链接进行分类,计算每个链接的重要性,并根据重要性确定链接的访问顺序。

基于上下文图的爬行策略:该策略构建上下文图以学习网页之间的关联度,计算当前页面到相关页面的距离,并且越接近页面的链接越优先访问。

)3)增量网络爬虫

增量网络爬虫只针对已下载页面访问增量网络更新或新创建和修改的页面,然后重新访问页面

常见的更新方法如下:

统一更新方法:以相同的频率访问所有页面,不受页面本身的更改频率的影响。

个体更新方法:根据个体页面的变更频率,确定再次访问各页面的频率。

基于分类的更新方法:爬虫根据网页的变化频率分为更新快的网页和更新慢的网页,分别设定不同的频率进行访问。

具体应用哪种更新方法取决于个人要求。

爬行动物合法性

目前,许多网站允许爬行动物获取的数据用于个人使用和科学研究。 但是,如果将爬取的数据用于其他用途,特别是转载和商业用途,在严重的情况下,可能会引起违法和民事纠纷。

以下两类数据无法攀登,不能用于商业用途。

隐私数据:是姓名、手机号码、年龄、血型、婚姻状况等,获取此类数据将违反个人信息保护法。

明确禁止他人访问的数据:例如是用户设定并加密了账户密码等权限控制后的数据。

也需要注意有关版权的问题。 有作者签名的受著作权保护的内容,不允许携带和擅自转载,也不允许用于商业用途。 所以爬行动物必须谨慎使用。

机器人协议

robots协议也称为爬虫协议、机器人协议,其全名被称为网络爬虫排除标准(Robots Exclusion Protocol ),在使用一个爬虫获取一个站点的数据时,它的全名是站点

通常是名为robots.txt的文本文件,通常存储在站点根目录下。 这里规定了该网站的哪些内容可以被爬虫获取,以及哪些页面不能被爬虫获取。

(1) robots.txt示例

用户代理: *

Disallow : /

Allow: /public/

它为所有搜索爬虫实现了仅允许公共目录爬网的功能,将上述内容另存为robots.txt文件,放在站点的根目录下,然后指向站点的门户文件,例如index.pportlex

上面的用户代理说明了搜索爬虫的名称。 如果在此处设置*,则表示该协议对爬行器攀登有效。 例如,可以设置:用户代理: baiduspider。 这意味着我们设定的规则对百度爬虫有效。 如果有多个用户代理记录,则多个爬行器将受到攀登限制,但必须至少指定一个。 Disallow指定不允许捕获的目录。 例如,在上面的示例中,如果设置为/,则不允许捕获所有页面。 Allow通常与Disallow一起使用,而不是单独使用以排除某些限制。 现在,假设/public/,则无法捕获所有页面,但可以捕获public目录。

所有爬虫都无法访问任何目录的代码

User-agent:*Disallow:/

允许所有爬虫访问任何目录的代码

User-agent:*Allow: /public/

禁止所有爬虫访问网站某些目录的代码如下

User-agent: * Disallow: /private/ Disallow: /tmp/

只允许某一个爬虫访问的代码如下

User-agent: WebCrawlerDisallow: User-agent: * Disallow: /

(2)robotparser 模块

了解 Robots 协议之后,我们就可以使用robotparser模块来解析robots.txt了。 该模块提供了一个类RobotFileParser,它可以根据某网站的robots.txt文件来判断一个爬取爬虫是否有权限来爬取这个网页。

该类用起来非常简单,只需要在构造方法里传入robots.txt的链接即可。 首先看一下它的声明:urllib.robotparser.RobotFileParser(url=’’),当然也可以在声明时不传入,默认为空,最后再使用 set_url()方法设置一下也可。

下面列刷了这个类常用的几个方法

set_url():用来设置robots.txt文件的链接。 如果在创建RobotFileParser对象时传入了链接,那么就不需要再使用这个方法设置了。

read():读取robots.txt文件并进行分析。 注意,这个方法执行一个读取和分析操作,如果不调用这个方法, 接下来的判断都会为False,所以一定记得调用这个方法。 这个方法不会返 回任何内容,但是执行了读取操作。

parse():用来解析robots.txt文件,传人的参数是robots.txt某些行的内容,它会按照robots.txt的语法规则来分析这些内容。

can_fetch():该方法传入两个参数, 第一个是User-agent,第二个是要抓取的URL。 返回的内容是该搜索引擎是否可以抓取这个URL,返回结果是True或False。

mtime():返回的是上次抓取和分析robots.txt的时间,这对于长时间分析和抓取的搜索爬虫是很有必要的,你可能需要定期检查来抓取最新的robots.txt。

modified() :它同样对长时间分析和抓取的搜索爬虫很有帮助,将当前时间设置为上次抓取 和分析robots.txt的时间。

认识反爬虫

网站反爬虫的目的和手段
(1)通过User-Agent校验反爬
浏览器在发送请求的时候,会附带一部分浏览器及当前系统环境的参数给服务器,服务器会通过User-Agent的值来区分不同的浏览器。

(2)通过访问频度反爬

普通用户通过浏览器访问网站的速度相对爬虫而言要慢的多,所以不少网站会利用这一点对访问频度设定一个阈值,如果一个IP单位时间内访问频度超过了预设的阈值,将会对该IP做出访问限制。

通常需要经过验证码验证后才能继续正常访问,严重的甚至会禁止该IP访问网站一段时间。

(3)通过验证码校验反爬
有部分网站不论访问频度如何,一定要来访者输入验证码才能继续操作。例如12306网站,不管是登陆还是购票,全部需要验证验证码,与访问频度无关。
(4)通过改变网页结构反爬
一些社交网站常常会更换网页结构,而爬虫大部分情况下都需要通过网页结构来解析需要的数据,所以这种做法也能起到反爬虫的作用。在网页结构变换后,爬虫往往无法在原本的网页位置找到原本需要的内容。

(5)通过账号权限反爬
部分网站需要登录才能继续操作,这部分网站虽然并不是为了反爬虫才要求登录操作,但确实起到了反爬虫的作用。
例如微博查看评论就需要登录账号。

爬取策略制定

发送模拟User-Agent:通过发送模拟User-Agent来通过检验,将要发送至网站服务器的请求的User-Agent值伪装成一般用户登录网站时使用的User-Agent值。

调整访问频度:通过备用IP测试网站的访问频率阈值,然后设置访问频率比阈值略低。这种方法既能保证爬取的稳定性,又能使效率又不至于过于低下。

通过验证码校验:使用IP代理,更换爬虫IP;通过算法识别验证码;使用cookie绕过验证码。

应对网站结构变化:只爬取一次时,在其网站结构调整之前,将需要的数据全部爬取下来;使用脚本对网站结构进行监测,结构变化时,发出告警并及时停止爬虫。

通过账号权限限制:通过模拟登录的方法进行规避,往往也需要通过验证码检验。

通过代理IP规避:通过代理进行IP更换可有效规避网站检测,需注意公用IP代理池是网站重点监测对象。

配置python爬虫环境 python爬虫相关库介绍与配置
目前Python爬虫相关库,按照库的功能,整理如下。 类型库名简介通用urllibPython内置的HTTP请求库,提供一系列用于操作URL的功能通用requests基于urllib,采用Apache2 Licensed开源协议的HTTP库通用urllib 3提供很多Python标准库里所没有的重要特性:线程安全,连接池,客户端SSL/TLS验证,文件分部编码上传,协助处理重复请求和HTTP重定位,支持压缩编码,支持HTTP和SOCKS代理,100%测试覆盖率框架scrapy一个为了爬取网站数据,提取结构性数据而编写的HTML/XML解析器lxmlc语言编写高效HTML/XML处理库。支持XPathHTML/XML解析器BeautifulSoup 4纯Python实现的HTML/XML处理库,效率相对较高

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。