Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
来源:互联网 发布:逆矩阵公式运算公式 编辑:程序博客网 时间:2024/04/30 13:24
解析 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 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()
函数是在程序里面使用,它的功能:确定指定的用户代理是否允许访问网页。
搞定
- Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
- Python爬虫之爬取——解析robots.txt文件
- 爬虫系列8解析robots.txt
- 百度爬虫robots.txt文件规范
- 爬虫中robots.txt
- python爬虫高级功能
- 网络爬虫排除协议robots.txt介绍及写法详解.
- 网络爬虫排除协议robots.txt介绍及写法详解.
- 【Python爬虫】添加高级功能
- 什么是robots.txt文件?
- 什么是robots.txt文件
- robots.txt文件用法
- robots.txt 文件语法
- robots.txt文件基础知识
- robots.txt 文件详解
- seo robots.txt文件
- robots.txt文件
- 什么是robots.txt文件?
- EXT.NET后台获取GridPanel所有行
- 如何:使用 foreach 访问集合类(C# 编程指南)
- 用 RPM 打包软件 第 3 部分
- openstack实践各种问题汇总
- 基于.net开发chrome核心浏览器【五】
- Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
- adb 点亮手机屏幕
- php中array_merge()与$arr1+$arr2两个数组直接相加的区别
- iOS企业版分发关于plist和证书的那些事
- Java反编译工具 Eclipse Class Decompiler
- tomcat绑定域名
- 数据结构之排序算法
- strut2简单总结(2)
- HttpClient学习之二