这几天在爬网站时发现有个别网站抓取时返回值为None、[ ]甚至是字段中返回“系统错误”等字眼),反复确认代码无误,怀疑是网站有反爬虫机制,尝试增加header后依然无法提取,考虑到只是提取本页面数据,并没有频繁抓取数据,应该与抓取频率无关。
尝试查看网站的爬虫协议:
Robots 协议(也称爬虫协议,机器人协议)是互联网爬虫的一项公认的道德规范,全称是“网络爬虫排除标准(Robots exclusion protocol)”,这个协议用来告诉引擎,哪些页面是可以抓取的,哪些不可以,例如:
- 禁止访问某个文件、文件夹
- 禁止某些种类的爬虫访问
- 限制爬虫访问网站的频率
搜索引擎蜘蛛访问网站时,它会首先检查该站点根目录下是否存在robots.txt文件,如果该文件存在,搜索引擎蜘蛛就会按照该文件中的内容来确定爬行的范围;如果该文件不存在,则搜索引擎蜘蛛将能够访问网站上所有没有被口令保护的页面(沿着链接抓取)
抓取网页之间,建议先阅读robots.txt,了解并执行网站管理者制定的爬虫规则。
常见的查看robots协议的方法是在网址后+“/robots.txt’
比如豆瓣首页网址“https://www.douban.com”,要查看其robots协议则修改为“https://www.douban.com/robots.txt”
- Allow代表允许访问
- Disallow代表禁止访问(Disallow/代表禁止访问所有页面,即完全屏蔽)
- User-agent可以判断是哪家爬虫(User-agent *表示对象是所有爬虫)
- Crawl-delay表示爬取的时间间隔为5s
或者直接通过Robots检测工具输入网址获取网站爬虫协议
常见的搜索引擎爬虫有:
- 谷歌机器人 googlebot
- 百度机器人 baiduspider
- 雅虎蜘蛛:slurp
- 搜狗蜘蛛:sougou spider
- 有道机器人:yodaobot/OutfoxBot
- 360蜘蛛 360Spider
- 必应机器人 bingbot
各大蜘蛛对robots.txt支持程度参考:搜索引擎蜘蛛与robot.txt的那些事儿
在网址后加“/robots.txt"后缀的用法并不适用于所有网站,比如尝试了在笔记网址”https://blog.csdn.net/dragongreenfire/article/details/114022063“加后缀,但是刷新后还是原页面,后来发现需要在网站首页取网址“https://www.csdn.net/robots.txt”,这是因为robots.txt文件必须驻留在域的根目录(根目录就是网站程序所在的目录),位于子目录中的robots.txt文件无效,漫游器只在域的根目录这个文件。正确的做法是在浏览器的网址搜索栏中,输入网站的根域名,然后再输入“/robots.txt"
参考资料:
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试