博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
阅读量:4354 次
发布时间:2019-06-07

本文共 1278 字,大约阅读时间需要 4 分钟。

解析 robots.txt 文件

使用的系统:Windows 10 64位

Python 语言版本:Python 2.7.10 V
使用的编程 Python 的集成开发环境:PyCharm 2016 04
我使用的 urllib 的版本:urllib2

注意: 我没这里使用的是 Python2 ,而不是Python3


一 . 前言

之前,我在网络爬虫科普的时候,介绍过robots.txt 文件,如果你还了解这个文件的功能,请到这个学习。

有一些站点它在 robots.txt 文件中设定了禁止流量该站点的代理用户。既然目标站点有这样的规矩,我们就要遵循它。

我们需要做的事情就是:先解析 robots.txt 文件。然后在在对需要下载的网页进行判断是否可以爬取。

我们可以使用 Python 自带的 robotparser 模块,轻松的完成这项工作。下面进行实战。

二 . 原理

我们先来看看目标 robots.txt 文件:

# section 1User-agent: BadCrawlerDisallow: /# section 2User-agent: *Crawl-delay: 5Disallow: /trap # section 3Sitemap: http://example.webscraping.com/sitemap.xml

这个 robots.txt 文件中说:对于BadCrawler 这样的代理用户是禁止浏览本站点的。

我们现在使用这个 Python 自带的 robotparser 模块测试一下:

>>> import robotparser>>> rp = robotparser.RobotFileParser()>>> rp.set_url('http://example.webscraping.com/robots.txt')>>> rp.read()>>> url = 'http://example.webscraping.com'>>> user_agent = 'BadCrawler'>>> rp.can_fetch(user_agent, url)False>>> user_agent = 'GoodCrawler'>>> rp.can_fetch(user_agent, url)True>>>

上面这个测试说明了,如果你将你的爬虫程序的 代理用户 设置为: BadCrawler 的话,因为你访问的目标站点已经警告你了:“我们禁止用户代理为BadCrawler 的用户访问本站点里面的所有网站”。所以,我们用 robotparser 模块创建的对象,通过rp.can_fetch(user_agent, url)函数返回 :False

can_fetch() 函数前面的一堆都是初始化,can_fetch() 函数是在程序里面使用,它的功能:确定指定的用户代理是否允许访问网页。



搞定

转载于:https://www.cnblogs.com/aobosir/p/5928539.html

你可能感兴趣的文章
类中的静态函数和非静态函数的区别
查看>>
windows 下安装Apache
查看>>
Fedora14 mount出现错误时解决办法【亲测有效】
查看>>
使用Visual Studio 2013进行UI自动化测试
查看>>
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>
160809308周子济第六次作业
查看>>
大型Web应用运行时 PHP负载均衡指南
查看>>
计算机的组成
查看>>
CSS2-3常见的demo列子总结一
查看>>
sublime text3最新版本注册码(build 3143)
查看>>
linux使用技巧
查看>>
必背公式及常数
查看>>
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
查看>>
js时间戳转时间格式
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Linux的用户态和内核态
查看>>
JavaScript原生错误及检测
查看>>
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(3): 深度克隆clone()
查看>>
为什么写作
查看>>