初级爬虫学习资源
如果对符合下列条件的网站进行强行数据采集时,会具有法律风险。
所以为了避免面向监狱爬虫,我们需要了解Robots协议和robotparser模块(判断url是否可爬取)。
可爬取协议——Robots协议
- Robots.txt(统一小写)是一种存放于网站根目录下的文本文件
- 用来告告诉该协议对哪些爬虫生效,哪些网页可以被这些爬虫爬取,哪些不可以
- 该协议有三个属性:
- Uer-agent : 描述了对哪些爬虫有效
- Disallow : 描述了哪些网页不可爬
- Allow : 声明哪些网页可爬,比Disallow优先级高
案例:
User-agent: * Disallow: / Allow: /public/
该协议对所有爬虫有效,不允许抓取所有页面,但可以抓取 public 目录
User-agent: Baiduspider Disallow:
允许百度爬虫抓取所有页面
User-agent: Baiduspider Disallow: /
禁止百度爬虫爬取任何目录
User-agent: WebCrawler Disallow: User-agent: * Disallow: /
只允许某一个爬虫访问
- 一些常见搜索爬虫的名称及其对应的网站
BaiduSpider | 百度 | www.baidu.com |
Googlebot | 谷歌 | www.google.com |
360Spider | 360 搜索 | www.so.com |
YodaoBot | 有道 | www.youdao.com |
Bingbot | 必应 | www.bing.com |
robotparser模块
-
该模块提供了RobotFileParser类,这个类可以根据网站的 robots.txt 文件来判断一个爬虫是否有权限来爬取这个网页
-
RobotFileParser类的方法
url就是你要爬取的网站的robots.txt 链接
用于定期检查以抓取最新的 robots.txt
最后两个方法对于长时间分析和抓取的搜索爬虫很有帮助
案例
对于小白,会前四个就够了
from urllib.robotparser import RobotFileParser #导入RobotFileParser类
url = 'https://www.python.org/robots.txt' #python官网的robots.txt的url
#方法1:直接用url创造对象 robot = RobotFileParser(url) #用url调用这个类的构造方法
#方法2:用无参构造函数创造对象,再用url调用对象的set_url > 目的都是一样的,设置url robot1 = RobotFileParser() robot1.set_url(url) #set_url方法: 设置url
#在设置url之后,一定要调用对象的read方法,不然can_fetch方法只会返回false rp.read() #read方法: 读取 robots.txt 文件并进行分析
#can_fetch(User-Agent,url):返回User-Agent是否可以抓取这个 url print(rp.can_fetch('Baiduspider', url))
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试