url = 'https://www.airbnb.co.id/rooms/2046355'#Link hotel respons = requests.get(url) #Send request to url soup = BeautifulSoup(respons.content, 'html5lib') #Soup the site judul = soup.find('h1',class_='_fecoyn4').text #Take header 1 on the site
但是结果会是这样的:
这意味着我们尝试检索的对象没有成功检索任何内容,因为据说我们正在尝试访问“ NoneType ”的属性。如果您尝试打印( title ),结果也将为空。
那么,有什么办法呢?我们将检索网站的原始 html。您可以使用以下语法来执行此操作。
text = soup.get_text() text #Take all text from html
结果你会得到这样的:
当然,如果不使用这个原始 html 将没有用。这里可以使用的技巧是使用正则表达式来提取所需的信息(在本例中我们将提取标题)。可以做的第一个技巧是找到我们要查找的关键字,在本例中为“ Villa Dewi Laksmi ”,然后在原始 html 输出上执行CTRL+F并搜索上面的句子,然后您会找到{ “__typename”:“PdpTitleSection”,“title”:“Villa Dewi Laksmi”。从这里我们可以创建一个正则表达式,如下所示:
regex = r'"__typename":"PdpTitleSection","title":"(.*?)"' match = re.search(regex, text) if match: print(match.group(1))
上述方法也可用于提取价格、位置、主机名和其他信息,只要它存在于原始 html 文本中即可。上面的语法也可以用在其他产品页面上,因为标题代码在每个页面上都是相似的。