我们在进行爬虫时难免发生IP被封和403错误等等,这都是网站检测出你是爬虫而进行的反爬措施,下面我总结了几个避免方法。
方法1:设置等待时间
有一些网站的防范措施可能会因为你快速提交表单而把你当做机器人爬虫,比如说以非常人的速度下载图片,登录网站,爬取信息。
常见的设置等待时间有两种,一种是显性等待时间(强制停几秒),一种是隐性等待时间(看具体情况,比如根据元素加载完成需要时间而等待)
1 显性等待时间
import time #导入包time.sleep(3)#设置时间间隔为3秒
尽量在夜深人静的时候进行数据的采集,切记采集不要太快,不然容易让网站识别出是非人类。
2 隐式等待
这里用到的主要语句,以wait.until()为例。
比如说形式如下:
wait1.until(lambda driver: driver.find_element_by_xpath("//div[@id='link-report']/span"))
上面的语句就是在等待页面元素加载全部完成后才进行下一步操作,因为爬虫速度太快,导致一些元素没有被加载完全就进行下一步操作,而导致没有查找到元素或者被网站认为是机器人在进行浏览。
方法2:修改请求头
识别你是机器人还是人类浏览器浏览的重要依据就是User-Agent,比如人类用浏览器浏览就会使这个样子的User-Agent:'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/