准备写个爬虫,监控一个网页,如果有更新就将更新的内容采集并邮件通知我,结果开始就卡住了。。。
问题:月份提取出来中文显示为乱码,如:2018å¹´05æ
我看了网页源码,有声明 charset=utf-8
, 并且我用的是 python3.6,所以比较纳闷为何为出现乱码,在 Chrome 控制台下测试 xpath 时是没毛病的:
然后各种百度、谷歌的找,大部说到是编码问题,一篇篇的关于编码的文章看得脑壳麻,然后按所说的方法都不能解决,特发贴看有遇到同样问题的朋友没
尝试过的方法:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')
text.encode('utf-8').decode('unicode_escape')
PS: 打印 requests.get()
的 text
所有中文都显示为乱码
下面为测试的 demo:
import requests
'''
import re
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')
'''
from lxml import html
url = 'http://www.wh-ccic.com.cn/node_13613.htm'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}
base_url = 'http://www.wh-ccic.com.cn'
page = requests.get(url, headers=headers)
tree = html.fromstring(page.text)
print(page.text)
all_a = tree.xpath('.//*[@class="STYLE13"]/a')
for a in all_a:
# print(a.attrs['href'])
# href = a.attrs['href']
# title = a.text.replace(u'\xe5', u' ')
href = a.attrib['href']
title = a.text
if '\\u' in title:
title = title.encode('utf-8').decode('unicode_escape')
print(title)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.