我正在尝试从页面源代码中获取一些信息。
例如,让我们来看看这个亚马逊产品。
我们可以使用以下代码检查源代码
我的目标是获取诸如产品说明之类的数据(例如1366x768 LED显示屏)
我基本上会获取整个源代码,然后使用正则表达式来获取所需的数据。
我正在做这样的事情:
import requests
source = requests.get(someUrl)
data = re.findall(r'<span class=\"a-list-item\">(.*?)<\/span><\/li>', source.content)
应该给我每一个产品说明,但是我不断得到TypeError: cannot use a string pattern on a bytes-like object
我不知道我的正则表达式是否错误或source.content
是否没有给我源代码
答案 0 :(得分:1)
正如诊断所解释的,正则表达式库需要字符串输入,而不是字节输入。
requests
documentation很清楚:
...对于非文本请求,以字节为单位访问响应正文:
>>> r.content
鉴于您检索了一些HTML文本 您将需要对其进行解码, 或让图书馆为您解码:
>>> source.content.decode(source.encoding)
或
>>> source.text
两个表达式都返回一个Unicode字符串, 这将是该正则表达式的 perfect 输入。
单独的项目:制作Soup,而不是正则表达式-bs4
是更合适的工具,在这里。