本文共 2033 字,大约阅读时间需要 6 分钟。
对于爬虫用户来说,网站的反爬机制可以说是他们的头号敌人。反爬机制是为了防止爬虫爬取数据过于频繁,给服务器造成过重的负担导致服务器崩溃而设置的机制,它其实也有几种不同的方式:
UA的全称是
User Agent
,它是请求浏览器的身份标志
,很多网站使用它来作为识别爬虫的标志,如果访问请求的头部中没有带UA那么就会被判定为爬虫,但由于这种要针对这种反爬虫机制十分容易,即随机UA,所以这种反爬机制使用的很少。
爬虫为了保证效率,往往会在很短的时间内多次访问目标网站,所以可以通过单个IP访问的频率来判断是否为爬虫。并且,这种反爬方式比较难以被反反爬机制反制,只能通过更换代理IP来保证效率,如飞鱼ip代理。
Cookie就是指会员制的账号密码登陆验证,这就可以通过限制单账号抓取频率来限制爬虫抓取,而验证码完全是随机的,爬虫脚本无法正确识别,同样可以限制爬虫程序。
请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,如果使用爬虫程序发起的请求,则该请求的载体为爬虫程序,则该请求的User-Agent为爬虫程序的身份标识。
服务器可以通过该值来判断发起请求的是浏览器还是爬虫程序
。通过正常的浏览页面我们可以获得允许正常访问的User-Agent。( 网页中按F12)
某些门户网站会对访问该网站的请求中的User-Agent进行捕获和判断,如果该请求的UA为爬虫程序,那么就拒绝该提供请求数据。
反爬取策略,让爬虫请求对应的url身份标识伪装成某一款浏览器
网页采集器,简单的来说就是利用爬虫技术,实现定向的网页信息爬取程序。个人理解为这里就是将程序看成是一个工具,类似转换器那种,使用代码实现与网络数据的转换。
# -*- coding: utf-8# @Time : 2020/12/7 23:55# @Author : ZYX# @File : request实战之网页采集器.py# @software: PyCharmimport requestsif __name__ == '__main__': # UA伪装,将对应的user-agent封装到一个字典中 # 对应着谷歌浏览器的一个身份标识 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400' } # 1.指定url url = 'https://www.sogou.com/web?' # 处理url携带的参数:封装到字典中 kw = input('enter a word:') param={ 'query':kw } # 2.发送请求 # 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数 response = requests.get(url=url,params=param,headers=headers) # 3.获得相应数据 page_data = response.text print(page_data) # 4.持久化数据存储 fileName = kw+'.html' with open('./data/'+fileName,'w',encoding='utf-8') as fp: fp.write(page_data) print(fileName+'保存成功,爬取数据结束!!!')
UA伪装,将对应的user-agent封装到一个字典中,对应着谷歌浏览器的一个身份标识,通过该标识浏览器会将爬虫当做是某一款浏览器。
指定url,并处理url携带的参数:封装到字典中。
发送请求,对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数 — UA伪装、请求参数query、url网址 。
获得相应数据,并将其持久化数据存储。简单的来说就是将爬取的结果以文件的形式保存。
运行程序,控制台输入参数,等待爬取结果
打开爬取结果文件,并在网页中打开测试。
转载地址:http://fweq.baihongyu.com/