【发布时间】:2011-06-26 07:14:51
【问题描述】:
我正在尝试使用urllib.request.urlopen() 打开网页,然后使用正则表达式进行搜索,但出现以下错误:
TypeError: can't use a string pattern on a bytes-like object
我明白为什么urllib.request.urlopen() 返回一个字节流,所以re 不知道要使用的编码。在这种情况下我该怎么办?有没有办法在 urlrequest 中指定编码方法,或者我需要自己重新编码字符串?如果是这样,我想做什么,我假设我应该从标头信息或编码类型中读取编码(如果在 html 中指定),然后将其重新编码为?
【问题讨论】:
-
在 Python 3.5x 中,使用 urllib.request 的这些答案中没有一个对我有用,因为 urllib.request.urlopen(url) 从字面上只返回一个字节流 - 它没有任何成员函数来解析任何形式的html中的标头。所以没有信息(),没有标题等。我必须自己解析它才能找到编码,但是没有编码我不能将它转换为文本来解析它。这是一个陷阱 22。
标签: python regex encoding urllib