regex - 使用正则表达式或漂亮的汤从 Instagram 抓取某人的网站

标签 regex python-3.x beautifulsoup instagram

我想从他们的 Instagram 简介中获取某人的网站。 Instagram 将此网站隐藏在文本/javascript 标签中,因此我无法像通常使用 beautifulsoup 的 anchor 那样获取 url。这是包含我要捕获的内容的页面源代码片段:

...,"country_block":false,"external_url":"https://www.brittanyannecohen.com/pattern-control","blocked_by_viewer":false,...

我注意到我想要获取的链接总是附加到字典中的 external_url 属性(见下图)。

我试图通过使用正则表达式获取此 url 但它不起作用,请参见下面的代码

url=re.findall("[\"external_url\":]['https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+']",soup)

但我得到错误:

bad character range [-\w at position 31

最佳答案

你有一个方括号,你应该有一个圆括号:

url=re.findall("[\"external_url\":]['https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+']",soup)
url=re.findall("[\"external_url\":]('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+']",soup)
                                   ^--- change [ to (

线索在错误消息 bad character range [-\w 中,这意味着字符类早于该表达式开始。看前面我们发现 ['https?:...,这也没有意义,那就是 问题出在哪里。

我不知道您的正则表达式是否真的有效 - 检查它太复杂了,尤其是当有更简单的方法时。

使用这个正则表达式

(?<="external_url":")[^"]+

整个匹配将成为您的目标 url。

参见 live regex demo .

关于regex - 使用正则表达式或漂亮的汤从 Instagram 抓取某人的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50193879/

相关文章:

python - Beautifulsoup4安装错误。未创建 bs4 文件夹

python - 正则表达式 - 如何使行尾可选

python - 在Python中使用多个正则表达式提取特定文本?

Python IRC-Bot Quakenet 无识别响应

python-3.x - 将 pandas 中的多个 bool 列融化到单个列中

python - 如何从具有不同 id 名称的段落中抓取文本?

python - re.M 不适用于我的代码

regex - 仅当字符串中没有 "\r\n"时才替换 "."的正则表达式

python - 如何使用python将放置在多个嵌套文件夹中的文档移动和重命名为一个新的单个文件夹?

python - 在Python中将SRC属性与汤返回隔离