限制网络爬虫的方法有很多。为了操作方便,网络爬虫也可以伪装用户。通常的方法是把自己伪装成浏览器。为什么呢?
用户代理参数,简称UA,用于指示请求运营商的身份。如果我们通过浏览器发起请求,请求的载体就是当前浏览器,UA参数的值表示当前浏览器身份所代表的一系列数据。如果我们使用爬虫发起的请求,那么请求的载体就是爬虫,请求的UA就是爬虫身份所代表的一串数据。
有些网站会通过识别请求的UA来识别请求的载体是否是爬虫。如果是爬虫,不会对请求返回响应,那么我们的爬虫就无法通过请求抓取网站中的数据值,这也是反爬虫的一个首要技术手段。所以,为了防止这个问题,我们可以把爬虫的UA伪装成浏览器的身份。
当网站检查你是真的被浏览器访问还是机器自动访问时,我们可以添加User-Agent来显示你是被浏览器访问的。
服务器将识别标题中的引用者是否是它自己。如果没有,一些服务器将不会响应,所以我们也可以在标题中添加引用。以谷歌浏览器的开发者工具为例(右键勾选或Ctrl+Shift+I),刷新页面,在网络模块中,我们可以点击左侧名称中的项目,看到一些信息,其中可以看到Referer和User-Agent的信息,并进行复制。
伪装的格式是:
方法1:使用请求模块。
方法2:使用urllib模块。
这样,如果网络爬虫伪装成浏览器,效果会好很多,爬行也不会停止。当然,要注意一些行为,避免被发现。