【问题标题】:Writing crawled data to file using python使用python将爬取的数据写入文件
【发布时间】:2014-07-10 08:36:53
【问题描述】:

我使用 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 ?

提前致谢。

【问题讨论】:

    标签: python unicode utf-8 urllib2 codec


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 添加了更多可能的解决方案。
    • Uuufff。棒呆了的家伙。真的帮了大忙。非常感谢我的朋友。
    【解决方案2】:

    如果您需要展示广告图片,则应单独保存。您可以使用标准模块HTMLParser 中的HTMLParser 类(使用起来非常简单)解析&lt;img&gt; 标签并将它们保存到单独的文件中。当然,每个&lt;img&gt;标签中的每个链接都应该替换为本地文件路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 2012-01-11
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多