如何解决用漂亮的汤从网站上提取类似的项目
我正在尝试抓取网站评分。我想获得每个单独的评分及其特定的日期。但是,尽管应该有几个结果,但我在列表中仅得到一个结果。 我在for循环中做错什么了吗?
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import time
url = "https://www.kununu.com/de/heidelpay/kommentare"
while url != " ":
print(url)
time.sleep(15)
r = requests.get(url,headers={'User-Agent': 'Mozilla/5.0'})
print(r.status_code)
soup = BeautifulSoup(r.text,"html.parser")
#print(soup.prettify())
#Get overall score of the company
score_avg = soup.find("span",class_="index__aggregationValue__32exy").text
print(score_avg)
#get individuel scores and dates of the company
rating_list = []
for box in soup.find_all(".index__rating__3nC2L"):
score_ind = box.select(".index__score__16yy9").text
date = select(".index__date__eIOxr").text
rating = [score_ind,date]
rating_list.append(rating)
print(rating_list)
3,3 [['5,0','Januar 2017']]
非常感谢!
解决方法
在最后一个循环完成之前,您似乎没有将评级附加到rating_list。印刷的评级功能是最后一个吗?
将append
添加到循环中,如下所示:
for box in soup.find_all(".index__rating__3nC2L"):
score_ind = box.select(".index__score__16yy9").text
date = select(".index__date__eIOxr").text
rating = [score_ind,date]
rating_list.append(rating)
,
好吧,问题在于您只是在rating
中附加了最后一个rating_list.append(rating)
值,因为它不在foor循环之内,所以您要做的是:
for box in soup.find_all(".index__rating__3nC2L"):
score_ind = box.select(".index__score__16yy9").text
date = select(".index__date__eIOxr").text
rating = [score_ind,date]
rating_list.append(rating)
就像这样,您将在rating
循环的每次迭代中附加每个for
值。希望这可以帮助您
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。