Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
2016-09-19 15:19
661 查看
解析 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文件:http://example.webscraping.com/robots.txt
# section 1 User-agent: BadCrawler Disallow: / # section 2 User-agent: * Crawl-delay: 5 Disallow: /trap # section 3 Sitemap: 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()函数是在程序里面使用,它的功能:确定指定的用户代理是否允许访问网页。
搞定
相关文章推荐
- Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
- Python 网络爬虫 011 (高级功能) 支持代理proxy — 让爬虫可以爬取google,Youtube等网站
- Python爬虫入门实战系列(一)--爬取网络小说并存放至txt文件
- python爬虫 爬取python高级教程到单独的txt文件
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析(转)
- Python实现txt文件内容快速合并功能
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- Python操作小结(连接mysql、解析txt\json文件、crontab任务、http请求, 等等)
- Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- robots.txt文件的解析及过滤
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- 零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
- robots.txt网站爬虫文件设置
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫:百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.2)源码及解析