- robots
- UA
User-Agent参数,简称为UA,有些网站会通过辨别请求的UA来判别该请求的载体是否为爬虫程序,如果为爬虫程序,则不会给该请求返回响应,那么我们的爬虫程序则也无法通过请求爬取到该网站中的数据值,这也是反爬虫的一种初级技术手段。那么为了防止该问题的出现,则我们可以给爬虫程序的UA进行伪装,伪装成某款浏览器的身份标识。
#将浏览器的UA数据获取,封装到一个字典中。该UA值可以通过抓包工具或者浏览器自带的开发者工具中获取某请求,从中获取UA的值 headers={ 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' } #自定义一个请求对象 #参数:url为请求的url。headers为UA的值) request = urllib.request.Request(url=url,headers=headers)
获取user-agent的另一种方式,不太好用,尽量用上面那种
from fake_useragent import UserAgent ua = UserAgent(verify_ssl=False,use_cache_server=False).random
- 数据加密
可以参考https://www.cnblogs.com/lianghui-lianghui/articles/10440998.html
中的xpath解析中爬取煎蛋网图片的例子,里面有详细的解释如何判断及解决数据加密的反爬机制
- 懒加载
参考 : https://www.cnblogs.com/lianghui-lianghui/articles/10451331.html
- 代理ip
设置请求的代理ip: www.goubanjia.com 快代理 西祠代理
上面三个网站都可以参考一下
代理ip的类型必须和请求url的协议头保持一致
url = 'https://www.baidu.com/s?wd=ip' # 在请求中加一个参数proxies字典,或者单独建立一个字典,存储多个代理ip,随机抽取一个 page_text = requests.get(url=url,headers=headers,proxies={'https':'61.7.170.240:8080'}).text with open('./ip.html','w',encoding='utf-8') as fp: fp.write(page_text)
- 验证码
参考 : https://www.cnblogs.com/lianghui-lianghui/articles/10449917.html
- cookie
使用session,cookie会自动保存到session中