一. 了解网站文件 robots.txt
每个网站都会定义robots.txt 文件,这个文件可以告诉网络爬虫爬取该网站时存在哪些限制。作为良好网民以及其他人利益,一般上遵从这些限制。
如何查看这个文件?可以通过在目标网站站点或域名后面加上 robots.txt 进行访问。 例如 目标网站站点 https://www.douban.com 的 robots.txt 文件就是 https://www.douban.com/robots.txt。
下面即为这个文件内容:
User-agent: *
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /forum/
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Disallow: /link2/
Disallow: /recommend/
Disallow: /trailer/
Disallow: /doubanapp/card
Sitemap: https://www.douban.com/sitemap_index.xml
Sitemap: https://www.douban.com/sitemap_updated_index.xml
# Crawl-delay: 5
User-agent: Wandoujia Spider
Disallow: /
关于这个 robots.txt 文件内容:
1: 定义了 ` Sitemap` 文件,即所谓的网站地图。
2: 这被注释掉的部分,如果没有被注释且指明了跳转链接,那么,表明每个用户两次爬虫之间的时间间隔不能小于 5s 否则所访问的网站网页会自动跳转到指定的链接页面。此时,相当于网站服务器禁封了 IP ,禁封时间依据各网站的情况。
3: 这部分表示,`robots.txt` 文件禁止那些代理为 ` Wandoujia Spider` 的爬虫访问网站。理解过来,就是禁止豌豆荚爬虫代理访问网站
二. 检查网站地图(Sitemap)
打开 robots.txt 文件里面的 Sitemap 地址,例如上面的 Sitemap 有, https://www.douban.com/sitemap_index.xml 和 Sitemap: https://www.douban.com/sitemap_updated_index.xml 。 网站提供的 Sitemap 文件(即网站地图)提供了该网站站点里面所有页面的链接,这些链接组成了这个 Sitemap 文件,所以叫做地图并不过分。 这样,便无须爬取某个网站站点里面的每一个网页因为网站提供的 Sitemap 文件 帮助了网络爬虫定为网站最新的内容(如下图)
注意:虽然 Sitemap 文件提供了一种爬取网站的有效方式,但是我们仍需要对其谨慎处理,因为该文件经常存在缺失、过期或者不完整的问题
三. robots.txt 文件的使用测试
对于这个 robots.txt 文件来说, Wandoujia Spider 的代理用户是禁止预览该站点的。
可以使用Python 自带的 robotparser 模块测试一下:
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url('https://www.douban.com/robots.txt')
rp.read()
url = 'https://www.douban.com'
user_agent = 'Wandoujia Spider'
wsp_info = rp.can_fetch(user_agent, url)
print("Wandoujia Spider 代理用户访问情况:",wsp_info)
user_agent = 'Other Spider'
osp_info = rp.can_fetch(user_agent, url)
print("Other Spider 代理用户访问情况:",osp_info)
输出结果如下:
Wandoujia Spider 代理用户访问情况: False
Other Spider 代理用户访问情况: True