当前位置: 首页 > 科技观察

爬取IP总是被封?教你一招

时间:2023-03-20 23:09:07 科技观察

当我在爬取一个网站遇到瓶颈想斜剑解决的时候,往往是先看网站的robots.txt文件,有时会另开一个页面给你爬行门。写爬虫有很多麻烦,比如:1、访问频率太高,受限;2、如何查找大量的网站网址;3、如何爬取网站新生成的URL等;这些问题都困扰着爬虫玩家,如果有大量离散的IP和账号,这些都不是问题,但大多数公司不具备这个条件。我们在工作中写的爬虫大多是一次性的、临时性的任务,需要你尽快完成工作。遇到上述情况时,尝试查看robots.txt文件。举个栗子:老板给你布置了一个任务,就是抓取豆瓣每天出的新影评、书评、群贴、同城贴、个人日志。想想这个任务有多大。豆瓣拥有1.6亿注册用户。光是抓个人日志这个任务,每天至少要上一次大家的主页。那是每天1.6亿次访问,还不算群/同城帖等,光靠那几十个IP设计一个常规的爬虫是不可能的。初看robots.txt老板交给你上面的任务,你一两把枪是怎么完成的?不要跟老板解释技术,他不懂,他要的只是结果。我们来看看豆瓣的robots.txt。https://www.douban.com/robots.txt看上图红框,里面有两个sitemap文件打开sitemap_updated_index文件看一下:里面是一个个压缩文件,里面的文件是新的豆瓣第一天生成的影评、书评、帖子等,感兴趣的可以打开压缩包看看。也就是说,你只要每天访问这个robots.txt中的sitemap文件,就可以知道生成了哪些新的url。您无需遍历豆瓣网站上亿个链接,大大节省了您的爬取时间和爬虫设计的复杂度,同时也降低了豆瓣网站的带宽消耗。这是一个双赢的局面,哈哈。上面通过robots.txt的sitemap文件找到了爬取网站新生成的URL的方法。按照这个思路也可以解决发现一个网站的大量URL的问题。再举个栗子:老板又给你任务了。老板说你上次抓豆瓣的时候说你需要很多IP来处理豆瓣上每天产生的新帖子。这次送你1000个IP,让你在天眼上搜索几千万家公司。捕获业务信息。看着这么多IP你垂涎欲滴,但是分析网站后发现,这种网站的爬取入口非常少(爬取入口指的是频道页,那种聚合了很多链接的页面)。把所有保留的url都抓起来很容易,看这么多IP还不够饱。如果你能一次把这个网站的几万个甚至几十万个网址都找出来,放到等待队列中,就可以把这么多IP的工作填满了,不会偷懒的。我们看他的robots.txt文件:https://www.tianyancha.com/robots.txt打开红框里的sitemap,里面有30000个公司网址,上图是1月3日生成的,那个网址是根据年、月、日生成的。如果把网址改成1月2日,2日的sitemap中可以看到上万个公司网址,这样就可以找到几十万个种子网址供你抓取。PS:上面的sitemap其实可以解决抓取天眼查新更新新生成的url的问题。一个小技巧,不仅降低了爬虫设计的复杂度,也降低了对方的带宽消耗。这在工作中非常适用。在工作中,你不关心你使用的框架有多好,只关心你工作的速度和质量。善于阅读robots.txt文件,你会发现一些奇怪的东西。