塞缪尔的回答更好,它实际上是一个问题的解决方案,但谁知道也许你可以在其他情况下使用它。在这种特殊情况下,您还可以在隐藏站点链接的脚本标记上使用正则表达式。
import re, requests
from bs4 import BeautifulSoup as bs
url = 'https://www.tripadvisor.co.uk/Restaurant_Review-g186338-d13544747-Reviews-Amrutha_Lounge-London_England.html'
regex = re.compile(r'\"website\":\"http[s]?://www\.[\w]+\.[\w]+[\.]?[\w]+/\"')
response = requests.get(url)
bSoup = bs(response.text, 'html.parser')
soup = bSoup.find_all('script', text=regex)
link = regex.findall(str(soup[0]))
print(link[0][11:-1])
我编辑这篇文章并做一些解释。谢谢塞缪尔的建议。
好吧,这段代码会找到一个网站链接,该链接使用 BeautifulSoup 和正则表达式存储在标签中。bSoup.find_all('script', text=regex) 找到两个标签。在第一个,soup[0],网站链接被存储。因为不只是一个链接,tripadvisor 网站链接也很少,我使用正则表达式,如上所示,只找到一个需要的链接,链接到酒店网站。因为正则表达式返回“网站”:“ http://www.amrutha.co.uk ”,所以我用链接 [0][11:-1] 对其进行切片,它只返回http://www.amrutha.co.uk .