使用requests请求网页时,返回的页面信息有时是乱码,如下代码
生活随笔
收集整理的這篇文章主要介紹了
使用requests请求网页时,返回的页面信息有时是乱码,如下代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用requests請求網(wǎng)頁時,返回的頁面信息有時是亂碼,如下代碼
學(xué)習(xí)python中有什么不懂的地方,小編這里推薦加小編的python學(xué)習(xí)群:895,817, 687 有任何不懂的都可以在里面交流,還有很好的視頻教程pdf學(xué)習(xí)資料,大家一起學(xué)習(xí)交流!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('輸入搜索內(nèi)容:')url = 'https://search.jd.com/Search?'get_all(url,key)返回的部分內(nèi)容;
<div class="p-name p-name-type-2"><a target="_blank" title="?????°?? èˉ′??-袖T??¤?”·?¤??-£é???‰?????μ???-袖?”·?£????袖t??¤???é¢???‘é—2???èo??¤§? ??o”???袖????‰?é?’?1′?-|?”?t??¤è?£????”·è£430é??è‰2 M" href="//item.jd.com/51029271063.html" οnclick="searchlog(1,51029271063,8,1,'','flagsClk=1077936264')"><em>?????°?? èˉ′??-袖T??¤<font class="skcolor_ljg">?”·</font>?¤??-£é???‰?????μ???-袖?”·?£????袖t??¤???é¢???‘é—2???èo??¤§? ??o”???袖????‰?é?’?1′?-|?”?t??¤è?£???<font class="skcolor_ljg">?”·è£ </font> 430é??è‰2 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是通過內(nèi)容分析出的編碼方式,這里是urf-8print(response.apparent_encoding)# 轉(zhuǎn)碼content = response.text.encode(response.encoding).decode(response.apparent_encoding)print(content)with open('jd.html','w',encoding='utf-8') as f:f.write(content)if __name__ == '__main__':key = input('輸入搜索內(nèi)容:')url = 'https://search.jd.com/Search?'get_all(url,key)控制臺輸出(部分);
E:\anaconda\python.exe E:/練習(xí)/最后階段/0808/jd.py 輸入搜索內(nèi)容:男裝 ISO-8859-1 utf-8 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="renderer" content="webkit"> <meta http-equiv="Cache-Control" content="max-age=300" /> <link rel="dns-prefetch" href="//search.jd.com" /><link rel="dns-prefetch" href="//item.jd.com" /><link rel="dns-prefetch" href="//list.jd.com" /><link rel="dns-prefetch" href="//p.3.cn" /><link rel="dns-prefetch" href="//misc.360buyimg.com" /><link rel="dns-prefetch" href="//nfa.jd.com" /><link rel="dns-prefetch" href="//d.jd.com" /><link rel="dns-prefetch" href="//img12.360buyimg.com" /><link rel="dns-prefetch" href="//img13.360buyimg.com" /><link rel="dns-prefetch" href="//static.360buyimg.com" /><link rel="dns-prefetch" href="//csc.jd.com" /><link rel="dns-prefetch" href="//mercury.jd.com" /><link rel="dns-prefetch" href="//x.jd.com" /><link rel="dns-prefetch" href="//wl.jd.com" /><title>男裝 - 商品搜索 - 京東</title><meta name="Keywords" content="男裝,京東男裝" /><meta name="description" content="在京東找到了260867件男裝的類似商品,其中包含了“男裝”等類型的男裝的商品。" /><script> window.loadFa_toJson_data={query:'%E7%94%B7%E8%A3%85'}; window.jdpts={};jdpts._st=new Date().getTime();window.pageConfig={closeJpg : 1,compatible: false,searchType: 0,jdfVersion: '2.0.0',floatnav: 1,price_pdos_off: 0,actName: '',pSource: 'search_pc',queryParam: {c1: 0,c2: 1342,c3: 0,brand: '',price: '',keyword: '男裝',page: '1'} }; window.searchUnit={resizeOnebox: function(g,f,j){var g=parseInt(g),i=typeof f,h=typeof j;if(!isNaN(g)){if("string"==i&&f!=""&&g>0){$("#J_oneBoxFrame_"+f).css("height",g+10);h=="function"&&j()}else{if(i=="undefined"||i=="function"){$("#virtualWareIFrame").css("height",g>0?g+10:0);i=="function"&&f()}}}},resizeShopbox: function(e,d){var f=0;switch(e){case 1:case 2:f=145;break;case 3:f=75;break;case 4:f=80;break;default:break}f&&$("#shopboxIFrame").css("height",f).show();typeof(d)=="string"&&(new Image().src=d)},coupon: {}}; window.QUERY_KEYWORD='男裝'; window.REAL_KEYWORD='男裝'; </script> <link type="text/css" rel="stylesheet" href="//misc.360buyimg.com/??jdf/1.0.0/unit/ui-base/5.0.0/ui-base.css,jdf/1.0.0/unit/shortcut/5.0.0/shortcut.css,jdf/1.0.0/unit/global-header/5.0.0/global-header.css,jdf/1.0.0/unit/myjd/5.0.0/myjd.css,jdf/1.0.0/unit/nav/5.0.0/nav.css,jdf/1.0.0/unit/shoppingcart/5.0.0/shoppingcart.css,jdf/1.0.0/unit/global-footer/5.0.0/global-footer.css,jdf/1.0.0/unit/service/5.0.0/service.css,jdf/1.0.0/unit/global-header-photo/5.0.0/global-header-photo.css,jdf/1.0.0/ui/area/1.0.0/area.css" /> <link type="text/css" rel="stylesheet" href="//misc.360buyimg.com/product/search/1.0.7/css/search.css" /> <script type="text/javascript" src="//misc.360buyimg.com/??jdf/1.0.0/unit/base/5.0.0/base.js,jdf/lib/jquery-1.6.4.js,product/module/es5-shim.js"></script> <script> window.SEARCH = {cid: 1349,ui_ver: '1.0.7',c_category: 1342,p_category: 0,enable_adv: 1,enable_prom_adwords: 1,enable_prom_flag: 1,enable_price: 1,enable_stock: 2,enable_yyk: 0,lottery_code: '',is_correct_hash: function(e){var a=["keyword","brand_id","activity_id","coupon_batch","ecard_id"];for(var c=0,b=a.length;c<b;c++){var d=new RegExp("(^|\\?|&)"+a[c]+"=([^&]*)(\\s|&|$)");if(d.test(e)){return true}}return false},get_real_hash: function(){var a=window.location.hash.substr(1);if(a&&$.browser.mozilla){return location.href.substr(location.href.indexOf("#")+1)}else{return a}} }; (function(a,b){var c=b.get_real_hash();if(b.is_correct_hash(c)){a.location.href=a.location.pathname+"?"+c;return false}else{if(a.self!=a.top||$.browser.msie&&$.browser.version<=9){var f=null,e=function(){var d=$(a).width();return 1210>d?$("html").removeClass():$("html").removeClass().addClass(d>=1210&&1390>d?"resp01":"resp02"),true};e();$(a).resize(function(){clearTimeout(f),f=setTimeout(e,20)})}}})(window,SEARCH); </script> </head> <body> <!--shortcut start--> <div id="shortcut-2014"><div class="w"><ul class="fl"><li id="ttbar-home"><i class="iconfont"></i><a href="//www.jd.com/" target="_blank">京東首頁</a></li><li class="dorpdown" id="ttbar-mycity"></li></ul>補充,方法二;
response = requests.get(url=url, headers=headers)etrees = etree.HTML(response.content.decode("gb18030"))總結(jié)
以上是生活随笔為你收集整理的使用requests请求网页时,返回的页面信息有时是乱码,如下代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬取mn52网站美女图片以及
- 下一篇: Python 入门之格式化输出