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

时间:2014-07-10 08:36:54

标签: 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) 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()

以下是已解析页面的屏幕截图。

enter image description here

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

如何删除那些unicode?

提前致谢。

2 个答案:

答案 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>标记中的每个链接都应该被本地文件路径替换。