python lxml解析中文的問題
問題描述
使用lxml來抓取中文字符,抓到的結果很蛋疼,不知道怎么處理...
comUrl='http://m.51job.com/search/codetail.php?coid=4108723'res=requests.get(comUrl)html=etree.HTML(res.text)p=html.xpath('//aside')[1].xpath('./p') #結果為[<Element p at 0x7bf01c8>, <Element p at 0x78f4408>, <Element p at 0x69db388>]p[0].xpath('./span/text()') #這個是想要抓取的字符
結果抓到的是這樣的 [u’xe6x80xa7xe8xb4xa8’]unicode但是內容是str的編碼,請問怎么把這個東西轉成中文?正常應該是’xe6x80xa7xe8xb4xa8’或者u’u6027u8d28’
問題解答
回答1:’’.join(map(lambda x:chr(x), map(lambda x:ord(x), u’xe6x80xa7xe8xb4xa8’))).decode(’utf-8’)回答2:
出現這種情況,一般是requests猜錯了網頁的編碼了因此指定requests的編碼就可以了.res.encoding =’utf-8’
In [33]: comUrl='http://m.51job.com/search/codetail.php?coid=4108723' ...: res=requests.get(comUrl) ...: res.encoding =’utf-8’ ...: html=etree.HTML(res.text) ...: p=html.xpath('//aside')[1].xpath('./p') #結果為[<Element p at 0x7b ...: f01c8>, <Element p at 0x78f4408>, <Element p at 0x69db388>] ...: p[0].xpath('./span/text()') #這個是想要抓取的字符 ...: Out[33]: [u’u6027u8d28’]In [34]: print _[0]性質
相關文章:
1. javascript - 如何讓移動端網頁的輸入框固定在底部?2. MySQL中無法修改字段名的疑問3. angular.js - angular內容過長展開收起效果4. Matlab和Python編程相似嗎,有兩種都學過的人可以說說嗎5. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請求)6. 大家好,請問在python腳本中怎么用virtualenv激活指定的環境?7. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應8. python的前景到底有大?如果不考慮數據挖掘,機器學習這塊?9. mysql - 怎么讓 SELECT 1+null 等于 110. javascript - 微信小程序限制加載個數
