我想从他们的 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/