lianghui-lianghui

各种反爬机制及解决方法

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

posted on 2019-02-27 19:40  liang0.0  阅读(580)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-11-21
  • 2021-12-05
  • 2022-12-23
  • 2021-12-25
  • 2021-12-15
  • 2021-11-30
  • 2022-12-23
猜你喜欢
  • 2021-12-16
  • 2021-11-28
  • 2021-12-15
  • 2022-02-08
  • 2022-12-23
相关资源
相似解决方案