xpath獲取標籤屬性亂碼解決

問題在於解碼和編碼
修改前的代碼安全

#-*- coding: utf-8 -*-

import requests
from lxml import etree

url = 'http://top.baidu.com/buzz?b=1&fr=20811'
response = requests.get(url)
r = etree.HTML(response.text)
item_list = r.xpath("//table[@class='list-table']//tr")
# print(item_list)
for i in item_list[1:]:
    first_name = i.xpath("./td[@class='first']/span")
    keyword_name = i.xpath("./td[@class='keyword']/a[@class='list-title']")
    try:
        print(first_name[0].text)
        print(keyword_name[0].text)
    except:
        pass
    print('***************************************************************')

打印輸出 中文字所有爲亂碼編碼

1
ÂêɯĸÇ×ÀϹ«³ö¹ì


2
ɱÓãµÜ¸¸×Ó´òÈËurl



3
·ÉÐÐÔ±Íü´øÔ¿³×spa



4
¿ì¹¸ß¹Ü±»ÅÐÎÞÆÚcode


5
¶«º£º½¿ÕÔÙÏÖÎ¥¹æxml


6
Ïȷ洴ʼÈËÈ¥ÊÀutf-8


7
öª·æ·ñÈÏÇúÆæÖ°©get


8
¹Â´æ6ɱ³Ô¼¦requests


9
IG 2:0 OMGit


10
СS°®Çé±£ÏÊÊõ


11
Öйú0-2º«¹ú


12
Û¬ÁÖ¼¤¶¯Å­³â²ÃÅÐ


13
µÇ±´À³ÓëÕÅÁ¦ºÏÓ°


14
¼ÃÄÏÎ¥½¨±ðÊû±»²ð


15
ÎÞÏÞ¼« Ðļ¡Ëðº¦


16
â¹û»ØÓ¦Áõ»¶Í²Û


17
ÎâÒà·² 100Íò


18
Àî³ÐîçΪٶùÇìÉú


19
ħµÀ×æʦ±»Ëø


20
ÇжûÎ÷×â½èÒÁ¹ÏÒò


21
±´¿ËººÄ·°®È®


22
Æ»¹ûÊÐÖµ´óËõË®


23
×ß·¿´ÊÖ»ú·£10Ôª


24
¹ú¼ÊÓͼÛ×òÈÕÊÕÕÇ


25
¹ú×ãÂäºóº«¹ú


26
shadowÌæ²¹


27
ÉòÃγ½»ØÓ¦Âô¼Ù»õ


28
̨ÄÏŮͯÔâĸŰËÀ


29
Öк«´óÕ½Ê×·¢


30
ÖÐѧΪÀÏʦÉèÁµ°®¼Ù


31
ºú¾²ÆعâºÀÃÅÉú»î


32
¹ËÍ¢ìÇҪȢÈçÀ¼


33
Ó¢¹úÒé»á·ñ¾öÍÑÅ·


34
¿ÏÄáÑǾƵ걬ը


35
µÎµÎ°²È«ÔÙÉý¼¶


36
ÖÜÐdzÛÕÅ°ØÖ¥ÖؾÛ


37
Õã½­Ñغ£¸ßËÙ¿ªÍ¨


38
°×ÓîÐøÔ¼Ò¼ÐÄ


39
Ê®´ó×î¶Â»¥ÁªÍø¹«Ë¾


40
ÖܽÜÂ×ɹÂèÂè½üÕÕ


41
º®¼ÙÌìÊýÅÅÐаñ


42
°ëÊý·ÉÐÐÔ±ÍËÐÝ


43
ºã´óÂò¶Ï±£ÀûÄá°Â


44
лª±£ÏÕÍò·åÀëÖ°


45
ÐðÀûÑDZ¬Õ¨


46
º«¾ç¹¬½«ÅÄÖйú°æ


47
½ûֹδ³ÉÄêÈËÕûÈÝ


48
³ÂÒ⺭ÏëÂèÂè


49
Ê׸ÖÄÐÀº»÷°ÜÉϺ£


50
Ñî×ϹØÏþÍ® ÍÈ


處理方式:

先查看 response的編碼
print(response.encoding)
而後對中文部分 encode('ISO-8859-1').decode('gbk')
附上修改事後的代碼和輸出

#-*- coding: utf-8 -*-

import requests
from lxml import etree

url = 'http://top.baidu.com/buzz?b=1&fr=20811'
response = requests.get(url)
print(response.encoding)
r = etree.HTML(response.text)
item_list = r.xpath("//table[@class='list-table']//tr")
# print(item_list)
for i in item_list[1:]:
    first_name = i.xpath("./td[@class='first']/span")
    keyword_name = i.xpath("./td[@class='keyword']/a[@class='list-title']")
    try:
        print(first_name[0].text.encode('ISO-8859-1').decode('gbk'))
        print(keyword_name[0].text.encode('ISO-8859-1').decode('gbk'))
    except:
        pass
    print('***************************************************************')
1
瑪莎母親老公出軌


2
佘詩曼迴應蛇精臉



3
殺魚弟父子打人



4
飛行員忘帶鑰匙


5
快鹿高管被判無期


6
先鋒創始人去世


7
東海航空再現違規


8
IG 2:0 OMG


9
濟南大白宮被拆


10
濟南違建別墅被拆


11
登貝萊與張力合影


12
無限極 心肌損害


13
孤存6殺吃雞


14
霆鋒否定曲奇致癌


15
中國0-2韓國


16
郜林激動怒斥裁判


17
小S愛情保鮮術


18
業主割斷安全繩


19
芒果迴應劉歡吐槽


20
吳亦凡 100萬


21
李承鉉爲女兒慶生


22
魔道祖師被鎖


23
伊瓜因發燒


24
切爾西租借伊瓜因


25
貝克漢姆愛犬


26
蘋果市值大縮水


27
走路看手機罰10元


28
國際油價昨日收漲


29
國足落後韓國


30
shadow替補


31
沈夢辰迴應賣假貨


32
中韓大戰首發


33
臺南女童遭母虐死


34
中學爲老師設戀愛假


35
胡靜曝光豪門生活


36
顧廷燁要娶如蘭


37
英國議會否決脫歐


38
肯尼亞酒店爆炸


39
滴滴安全再升級


40
周星馳張柏芝重聚


41
浙江沿海高速開通


42
十大最堵互聯網公司


43
周杰倫曬媽媽近照


44
寒假天數排行榜


45
半數飛行員退休


46
恆大買斷保利尼奧


47
新華保險萬峯離職


48
韓劇宮將拍中國版


49
敘利亞爆炸


50禁止未成年人整容

相關文章
相關標籤/搜索