xpath获取标签属性乱码解决

32次阅读

共计 2477 个字符,预计需要花费 7 分钟才能阅读完成。

问题在于解码和编码修改前的代码
#-*- 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ɱÓãµÜ¸¸×Ó´òÈË

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

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

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

6Ïȷ洴ʼÈËÈ¥ÊÀ

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

8¹Â´æ6ɱ³Ô¼¦

9IG 2:0 OMG

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

11Öйú0-2º«¹ú

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

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

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

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

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

17ÎâÒà·² 100Íò

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

19ħµÀ×æʦ±»Ëø

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

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

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

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

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

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

26shadowÌæ²¹

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 东海航空再现违规

8IG 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 国足落后韩国

30shadow 替补

31 沈梦辰回应卖假货

32 中韩大战首发

33 台南女童遭母虐死

34 中学为老师设恋爱假

35 胡静曝光豪门生活

36 顾廷烨要娶如兰

37 英国议会否决脱欧

38 肯尼亚酒店爆炸

39 滴滴安全再升级

40 周星驰张柏芝重聚

41 浙江沿海高速开通

42 十大最堵互联网公司

43 周杰伦晒妈妈近照

44 寒假天数排行榜

45 半数飞行员退休

46 恒大买断保利尼奥

47 新华保险万峰离职

48 韩剧宫将拍中国版

49 叙利亚爆炸

50 禁止未成年人整容

正文完
 0