Python request.get遇到的问题

1 篇文章 0 订阅
1 篇文章 0 订阅

一、出现404
核心:404一般是指在目标服务器上找不到所用的URL,因此仔细观察自己的URL是否写对。
常见错误:url中htm看做是html,虽然两者的本身差别并不大

二、爬取部分网站有可见内容无法用request爬取:例如冬奥会的选手获奖情况:
在这里插入图片描述
可以选择采用其他爬取工具,如selenium
因为request作为通过网络请求获取数据的模块,更适合静态页面,如果存在下拉窗口或者界面交互按钮,或者网页存在JS动态渲染,则难以爬取;而selenium作为自动化测试工具其更多是模拟人为行为去对浏览器进行操作,可见的内容皆可以爬取;但正也由于模拟,selenium爬取效率较低,大规模的数据对其不太友好。

三、错误代码521
脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色。而对于需要独立运行的JS,nodejs就是一个解析器。
每一种解析器都是一个运行环境,不但允许js定义各种数据结构,进行各种计算,还允许js使用允许环境提供的内置对象和方法做一些事情。如运行在浏览器中的js的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在nodejs中的js的用途是操作磁盘文件或搭建http服务器,nodejs就相应提供了fs,http等内置对象。
当我们使用requests得到521的结果时可以采用的一个方法为手动添加请求头。在开发者环境中的网络(可以通过右键——“检查”打开)刷新目标网页,打开html的文件,如图:
在这里插入图片描述
打开后找到请求头的部分,复制其cookie等信息:
在这里插入图片描述
构造请求头:
在这里插入图片描述
即可直接开始requests.get,但这个方法有可能在段时间后就会失效,因为cookie本身是动态有时效的。其余还有使用selenuim两次访问以及requests构造cookie的方法,但笔者才疏学浅,尝试没有成功。

四、爬取数据写入csv文件遇到:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u2753’ in position 103: illegal multibyte sequence
解决:编码问题,有些Unicode字符gbk无法识别,可以采用其他方式:utf-8和gb18030的编码方式解决,因为中文编码的大小:gbk<gb2312<gb18030,一般情况下,gb18030编码都能解析gbk不能解析的编码信息。;也可以在使用encoding时采用“ignore”的方式,可见https://blog.csdn.net/u010481688/article/details/82184460。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值