我使用urllib2抓取谷歌搜索结果页面数据并将其写入文件。但是当我在浏览器中打开解析的html文件时,我得到了一些utf-8字符。
这是我在python中用于htmlparse的代码。
import os
import urllib2
import webbrowser
url = 'https://www.google.co.in/search?q=lcd+tv'
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11
(KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
req = urllib2.Request(url, headers=hdr)
response = urllib2.urlopen(req)
f = response.read()
file = open('file.html','w+')
file.write(f)
file.close()
以下是已解析页面的屏幕截图。
我们可以在标题上看到and和某些地方。甚至广告图片都没有加载:(。
如何删除那些unicode? p>
提前致谢。
答案 0 :(得分:1)
Web服务器发送了UTF-8编码数据,但您已写入使用默认文本编码打开的文件。在Python中,即ASCII,导致非ascii数据被转储到文件中。使用“wb”(二进制)模式打开文件,它可能会解决您的问题。
此外,Google不会在页面本身中提供编码信息,而只会在Content-Type标头中提供。从文件加载时,浏览器可能无法识别它是UTF-8。您可以尝试在文档中添加元标记
<meta http-equiv="content-type" content="text/html; charset=utf-8">
关于广告,请注意相对网址会尝试在您的高清而不是实际服务器上查找文件。
答案 1 :(得分:0)
如果您需要显示广告图片,则应单独保存。您可以使用标准模块<img>
中的HTMLParser
类(它非常简单易用)来解析HTMLParser
个标记,并将它们保存到单独的文件中。当然,每个<img>
标记中的每个链接都应该被本地文件路径替换。