当前位置:首页 - Python

python3爬虫百度搜索结果乱码

作者:高景洋 日期:2022-12-07 17:12:20 浏览次数:830

url = 'https://www.baidu.com/s?wd={}'.format(keyword_query)

headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
#'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'cookie 要替换成自己的',
'Host': 'www.baidu.com',
'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

resp1 =requests.get(url,headers=headers)
resp1.encoding = 'utf-8'


python3 获取百度搜索结果时,总是乱码~

排查思路如下:

1、乱码问题,一般与编码有关~遂对 上述代码中,resp1 对像进行各种 decode 操作,结果仍不能正常返回结果

2、请求时 header中缺少内容?遂通过抓包,将浏览器header中的所有内容,一个不少的,全部都拉了过来,结果还是不行

3、检查header中的项,发现 'Accept-Encoding': 'gzip, deflate, br' 有可疑的味道~ 因在做网站过程中,为了让页面加载更快,可以在nginx中将页面进行gzip压缩操作,该操作会使页面加载速度有成倍的速度变化。如果页面被压缩,是否会对页面编码产生影响?

    遂将header中的该项注释,重新运行,重新进行编码操作~ 结果正常~

4、经查资料,页面gzip后,页面内容会被编译成另一种格式,在应用爬虫时,会影响正常的编码解码操作。

    所以,在我们处理爬虫操作时,如果遇到的编码问题解决不了,不妨试一下,去掉header中的 压缩操作。 



本文永久性链接:
<a href="http://r4.com.cn/art216.aspx">python3爬虫百度搜索结果乱码</a>
当前header:Host: r4.com.cn X-Host1: r4.com.cn X-Host2: r4.com.cn X-Host3: 127.0.0.1:8080 X-Forwarded-For: 100.28.227.63 X-Real-Ip: 100.28.227.63 X-Domain: r4.com.cn X-Request: GET /art216.aspx HTTP/1.1 X-Request-Uri: /art216.aspx Connection: close User-Agent: CCBot/2.0 (https://commoncrawl.org/faq/) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 If-Modified-Since: Fri, 01 Mar 2024 14:30:28 GMT Accept-Encoding: br,gzip