我想从他们的Instagram生物中获取someones网站。 Instagram以text / javascript标签隐藏了这个网站,所以我不能像往常一样使用beautifulsoup的锚点来抓取网址。以下是页面源代码的一个片段,其中包含我尝试捕获的内容:
...,#34; country_block":假," external_url":" https://www.brittanyannecohen.com/pattern-control"" blocked_by_viewer&#34 ;:假,...
我注意到我想要抓取的链接始终附加到字典中的external_url
属性(参见下图)。
我试图通过使用正则表达式获取此网址,但它无效,请参阅下面的代码
url=re.findall("[\"external_url\":]['https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+']",soup)
但我收到错误:
糟糕的角色范围[ - 位置31的<\ _
答案 0 :(得分:1)
你有一个方括号,你应该有一个括号:
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":")[^"]+
整场比赛将是您的目标网址。
请参阅live regex demo。