Regex 解析源代码时正则表达式出现问题
我试图从网页源代码中获取一些信息 例如,让我们以这个亚马逊产品为例 我们可以使用 查看来源: 我的目标是获取一些数据,例如产品说明1366x768 LED显示屏 我基本上是完整的源代码,然后使用正则表达式来获得我需要的数据 我在做这样的事情:Regex 解析源代码时正则表达式出现问题,regex,python-3.x,web-scraping,Regex,Python 3.x,Web Scraping,我试图从网页源代码中获取一些信息 例如,让我们以这个亚马逊产品为例 我们可以使用 查看来源: 我的目标是获取一些数据,例如产品说明1366x768 LED显示屏 我基本上是完整的源代码,然后使用正则表达式来获得我需要的数据 我在做这样的事情: import requests source = requests.get(someUrl) data = re.findall(r'<span class=\"a-list-item\">(.*?)<\/span>
import requests
source = requests.get(someUrl)
data = re.findall(r'<span class=\"a-list-item\">(.*?)<\/span><\/li>', source.content)
这应该会给我所有的产品描述,但我一直得到TypeError:不能在类似字节的对象上使用字符串模式
我不知道我的正则表达式是错误的还是源代码。内容没有给我源代码。正如诊断所解释的,正则表达式库需要的是字符串输入,而不是字节 要求非常明确: 。。。对于非文本请求,以字节形式访问响应正文:
>>> r.content
假设您检索了一些HTML文本
你会想解码它,
或者让图书馆为您解码:
>>> source.content.decode(source.encoding)
或
两个表达式都返回Unicode字符串,
这将是该正则表达式的完美输入
单独的项目:make,而不是Regex-这里,bs4是更合适的工具。Regex通常不是解析HTML的合适工具。阅读关于Python的漂亮汤库,可以获得更好的选择。我认为,请明确说明您希望从页面中获得的信息,而不是每个产品的一般说明。。。例如,您是否希望整个比较表位于底部?
>>> source.text