gpt4 book ai didi

python - 为什么没有打印出评论?我使用了正确的 HTML 元素吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:51 24 4
gpt4 key购买 nike

我正在尝试打印 yelp 中针对特定餐厅的评论的段落部分。我不确定我是否正确实现了 BeautifulSoup 函数。我提供下面的代码。

我见过类似的 soup.find_all 工作实现。我认为这是我在 attrs 中添加的内容的问题。我认为最好找到所有具有相同类名并包含评论的 div 元素。

for i in range (0,500,20):
url = 'https://www.yelp.com/biz/m%C3%A9m%C3%A9-mediterranean-new-york-4?start={}'.format(i)
response = requests.get(url, headers=headers, verify=False).text
soup = BeautifulSoup(response, "lxml")
for s in soup.find_all('div', attrs={'span class': 'lemon--span__373c0__3997G'}):
re = s.find('p', attrs={'lang': 'en'})
print(re.text)

现在,当我运行此代码时,它不会打印出任何错误。它只说:“进程已完成,退出代码为 0”这让我相信我没有正确使用正确的元素或者搞乱了 for 循环中的逻辑。

最佳答案

html 看起来很多都是动态的,例如类名等会随着时间的推移而改变。我将从 script 标签中获取评论信息并使用 json 库进行解析

import requests,json
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.yelp.com/biz/m%C3%A9m%C3%A9-mediterranean-new-york-4')
soup = bs(r.content, 'lxml')
data = json.loads(soup.select_one('[type="application/ld+json"]').text.strip())
print(data)
<小时/>

如果你想取消 bs4,你可以通过正则表达式输出所需的字符串。

import requests,json, re

r = requests.get('https://www.yelp.com/biz/m%C3%A9m%C3%A9-mediterranean-new-york-4')
p = re.compile(r'({"aggregateRating.+?(?=<))', re.DOTALL)
data = json.loads(p.findall(r.text)[0].strip())

enter image description here

关于python - 为什么没有打印出评论?我使用了正确的 HTML 元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57701877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com