使用requests请求网页时,返回的页面信息有时是乱码,如下代码
学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
def get_all(url,key):
params = {
'keyword':key,
'enc':'utf-8'
}
response = requests.get(url=url,params=params,headers=headers)
with open('jd.html','w',encoding='utf-8') as f:
f.write(response.text)
if __name__ == '__main__':
key = input('输入搜索内容:')
url = 'https://search.jd.com/Search?'
get_all(url,key)
返回的部分内容;
<div class="p-name p-name-type-2">
<a target="_blank" title="æžåœ°ä¼ 说çŸè¢–Tæ¤ç”·å¤å£éŸ©ç‰ˆæ½®æµçŸè¢–男士åŠè¢–tæ¤åœ†é¢†ä¼‘闲修身大ç 五分袖潮牌é’å¹´å¦ç”Ÿtæ¤è¡£æœç”·è£
430黄色 M" href="//item.jd.com/51029271063.html" οnclick="searchlog(1,51029271063,8,1,'','flagsClk=1077936264')">
<em>æžåœ°ä¼ 说çŸè¢–Tæ¤<font class="skcolor_ljg">ç”·</font>å¤å£éŸ©ç‰ˆæ½®æµçŸè¢–男士åŠè¢–tæ¤åœ†é¢†ä¼‘闲修身大ç 五分袖潮牌é’å¹´å¦ç”Ÿtæ¤è¡£æœ<font class="skcolor_ljg">ç”·è£
</font> 430黄色 M</em>
<i class="promo-words" id="J_AD_51029271063"></i>
</a>
</div>
解决方法和思路过程;
代码;
def get_all(url,key):
params = {
'keyword':key,
'enc':'utf-8'
}
response = requests.get(url=url,params=params,headers=headers)
# 打印出所请求页面返回的编码方式
print(response.encoding)
# response.apparent_encoding是通过内容分析出的编码方式,这里是urf-8
print(response.apparent_encoding)
# 转码
content = response.text.encode(response.encoding).decode(response.apparent_encoding)
print(content