問題在於解碼和編碼
修改前的代碼安全
#-*- 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禁止未成年人整容