• 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中