Python正则提取Instagram链接遇误抓取问题求助
精准提取网页中Instagram链接的正则表达式优化方案
问题背景
需要从网页中提取类似www.instagram.com%2FMohakMeet的Instagram链接片段,但当前使用的正则表达式会误抓取YouTube页面描述等无关内容,无法精准匹配目标链接。
现有代码
for d in g: stripped = (d.rstrip()) url = stripped+"/about" print("Retreiving" + url) response = requests.get(url) data = response.text link = re.findall('''(www.instagram.com.+?)\s?"?''', data) if link == []: print ('No Link') else: x = str(link[0]) print ("Insta Link", x) y = x.replace("%2F", '/', 3) print (y) # with open ('l.txt', 'a') as v: # v.write(y) # v.write("\n")
失效的正则模式
(www.instagram.com.+?)\s?"?
解决方案
修正后的正则表达式
(www\.instagram\.com[^"\s]+)
替换后的代码片段
把原代码中的正则匹配行替换为:
link = re.findall(r'(www\.instagram\.com[^"\s]+)', data)
正则说明
www\.instagram\.com:转义域名中的点号,避免匹配到类似wwwxinstagramycom这类无关字符串,精准锁定Instagram域名[^"\s]+:匹配除双引号、空白字符之外的所有字符,直到遇到这两种边界字符为止,刚好对应目标链接的结束位置,不会过度抓取后续的无关内容
这样就能精准提取www.instagram.com%2FMohakMeet这类目标链接,不会误抓其他页面的无关文本。
内容的提问来源于stack exchange,提问作者Hellrockerz
相关产品推荐
相关产品推荐

