我的目标:从网址获取页面源,并计算该页面源中关键字的所有实例

我的操作方式:通过urllib2获取页面源,循环浏览页面源的每个字符并将其与关键字进行比较

我的问题:页面源为ascii时,我的关键字编码为utf-8。每次尝试进行转换时,我都会遇到错误。

获取页面源:

import urllib2
response = urllib2.urlopen(myUrl)
return response.read()


比较网页来源和关键字:

pageSource[i] == keyWord[j]


我需要将这些字符串之一转换为其他字符串的编码。凭直觉,我认为utf-8(关键字)的ascii(页面源代码)将是最好和最简单的,所以:

    pageSource = unicode(pageSource)
UnicodeDecodeError: 'ascii' codec can't decode byte __ in position __: ordinal not in range(128)

最佳答案

我假设您的远程“源页面”不仅仅包含ASCII,否则您的比较将按原样进行(ASCII现在是UTF-8的子集。即ASCII中的A为0x41,与UTF-8相同) 。

您可能会发现Python Requests库更容易,因为它会根据服务器的标头自动将远程内容解码为Unicode字符串(Unicode字符串是中性的,因此可以进行比较而不必担心编码)。

resp = requests.get("http://www.example.com/utf8page.html")
resp.text
>> u'My unicode data €'


然后,您需要解码参考数据:

keyWord[j] = "€".decode("UTF-8")
keyWord[j]
>> u'€'


如果要在源代码中嵌入非ASCII,则需要定义使用的编码。例如,在源代码/脚本的顶部:

# coding=UTF-8

07-26 09:29
查看更多