php 网页内容抓取(比如说在requests中如何使用cookies进行登录验证(图))
优采云 发布时间: 2022-02-17 07:03php 网页内容抓取(比如说在requests中如何使用cookies进行登录验证(图))
最近在学习python爬虫的时候,在使用requests的时候遇到了很多问题。例如,如何在请求中使用 cookie 进行登录验证。您可以查看博客内容。本篇博客要解决的问题是使用requests时如何避免乱码。
import requests
res=requests.get("https://www.baidu.com")
print res.content
以上是使用requests从一个简单的网页请求数据的方式。但是很容易出现乱码问题。
我们可以在网页上右键查看编码方式查看源码: content="text/html;charset=utf-8"-> 可以知道网页的编码方式是utf8.@ >由于中文编码模式为gbk,所以我们需要将编码模式改为gbk。
查了一些资料,说requests可以自动获取网页的编码方式,res.encode的输出看起来像utf8,没错没错。但是中文输出的内容有乱码。据说可以直接指定获取到的内容的encode属性,“res.encode='gbk'”,但是我试了一下,不行。
python的内部编码方式是utf8,也就是说python在处理其他字符串内容时,必须先将内容转换成utf8的编码方式,然后再解码成你想要输出的编码方式。
比如s=”Chinese”就是str类型的字符串编码方式是gb2312
需要s.decode("gb2312") 将gb2312编码方式的内容解码成Unicode编码
然后输出时指定s的编码方式为gbk->s.encode("gbk")
言归正传,我们得到网页内容res后,通过res.content.decode("utf8","ignore").encode("gbk","ignore")就不会出现乱码了。
这里使用的ignore属性意味着忽略其中有字段的编码,只显示有效的编码。
先说python编码的转换问题:(可以查看博客总结)
关于请求使用代理问题的解决方法,可以查看博客内容。