• 使用pyquery是遇到的一个403的问题


      在网上爬虫时,本地windows下运行pyquery代码正常,但是在linux下运行时一直报错 403 Forbidden。刚开始的代码如下

    from pyquery import PyQuery as pq
    
    html = pq('http://www.yixuanju.com/book/10462', encoding="utf-8")

      通过在网上搜索,都是说因为没有添加headers,导致服务器把你判定为爬虫程序。按照一般的解决方法,添加了请求头headers,修改后代码如下

    from pyquery import PyQuery as pq
    
    headers = {
    'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
    }
    
    html = pq('http://www.yixuanju.com/book/10462', encoding="utf-8", headers=headers)

      可是上述代码执行后还是报403错误。最后查看源码,原来使用pyquery,到后面是调用到url_opener(url, kwargs)方法时出现问题了。原来openers在发送请求时,会先判断你是否可以引入requests模块,如果引入了该模块,会使用requests去发送请求,否则采用urllib3的request请求。而urllib3的调用时,会将你的头信息等丢失,导致参数失效。

      我也是因为windows上安装过requests,而linux下没安装requests,导致两处方法执行有差别。安装好requests模块后,之前的问题也就解决了。

  • 相关阅读:
    实验0 了解和熟悉操作系统
    学习进度条
    0302软件构建与教学
    评论任务
    学习进度条
    sprint3个人总结
    软件工程学期总结
    6.3 学术诚信与职业道德
    阅读《构建之法》第8、9、10章
    nodejs学习心得
  • 原文地址:https://www.cnblogs.com/feiyu127/p/7659987.html
Copyright © 2020-2023  润新知