使用python将爬网数据写入文件

使用python将爬网数据写入文件,python,unicode,utf-8,urllib2,codec,Python,Unicode,Utf 8,Urllib2,Codec,我使用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) Apple

我使用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()
以下是解析页面的屏幕截图

我们可以在标题上看到–和一些地方。甚至广告图片也没有加载:(

如何删除这些unicode


提前感谢。

web服务器发送了UTF-8编码的数据,但您已写入使用默认文本编码打开的文件。在Python中,这是ASCII,导致非ASCII数据转储到文件中。使用模式“wb”(二进制)打开文件,可能会解决您的问题

此外,Google不在页面本身中提供编码信息,而只在内容类型标题中提供。从文件加载时,浏览器可能无法识别它是UTF-8。您可以尝试向文档添加元标记

 <meta http-equiv="content-type" content="text/html; charset=utf-8">


关于广告,请注意,相对URL会尝试在您的硬盘上而不是实际服务器上查找文件。

如果您需要显示广告图像,它们应该单独保存。您可以使用
HTMLParser
类解析
标记(使用非常简单)从标准模块
HTMLPasser
中,将它们保存到单独的文件中。当然,每个
标记中的每个链接都应替换为本地文件路径。

添加了更多可能的解决方案。uUuff。棒极了。真的帮了大忙。非常感谢我的朋友。