我試圖抓取一些電影評論的評分,但評分不是一個數字,而是 10 個不同的影像之一,從顯示空星到滿星。
這是我從中抓取資料的網站: https ://www.cinemagia.ro/filme/avatar-17818/reviews/?pagina=1&order_direction=DESC
這是我的代碼:
import requests
from bs4 import BeautifulSoup
url = 'https://www.cinemagia.ro/filme/avatar-17818/reviews/?pagina=1&order_direction=DESC'
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
rating=0
scraped_ratings = soup.find_all('span', class_='stelutze').find=("img")
for i in scraped_ratings:
if "star_full.gif" in i.get("src"):
rating = 1
print(rating)
有人幫我寫了這段代碼,但它只給出了第一次評論的評級。
rating=0
rawRating = soup.find("span", {"class": "stelutze"}).find_all("img")
for i in rawRating:
if "star_full.gif" in i.get("src"):
rating = 1
print(rating)
我試圖將代碼更改為:
rating=0
count=0
rawRating = soup.find_all("span", {"class": "stelutze"}).find_all("img")
for i in rawRating:
if "star_full.gif" in i.get("src"):
rating = 1
count = 1
if count == 10:
print(rating)
rating=0
count=0
但我得到這個錯誤:
AttributeError: ResultSet object has no attribute 'find_all'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
我認為這是因為我不能在同一個陳述句中使用兩個 find_all 。
有什么幫助嗎?
更新。現在代碼如下所示:
import requests
from bs4 import BeautifulSoup
pageNum = 1
for k in range (1,17):
url = f'https://www.cinemagia.ro/filme/avatar-17818/reviews/?pagina={pageNum}&order_direction=DESC'
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
scraped_movies = soup.find_all('div', class_='left comentariu')
movies = []
for movie in scraped_movies:
movies.append(movie.get_text().strip())
reviewCount = -1
rating = 0
count = 0
rawRatings = soup.find_all("span", {"class": "stelutze"})
for i in rawRatings:
rawRating = i.find_all("img")
for j in rawRating:
if "star_full.gif" in j.get("src"):
rating = 1
count = 1
if count == 10:
reviewCount = 1
print(rating)
print(movies[reviewCount])
rating = 0
count = 0
pageNum = 1
唯一的問題是:在電影中,我有所有評論,但并非所有評論都有評分。在 RawRatings 中有所有的評級。我想列印每個評級,然后是各自的評論,但是當我遇到沒有評級的評論時,我只會給它排在后面的評級,從那時起搞砸一切。
關于如何查看電影中的電影是否沒有評級的任何想法?這樣我就可以將 reviewCount 增加 2 而不是 1。
uj5u.com熱心網友回復:
我相信這應該可以解決您的問題,我沒有對此進行測驗,但我不明白為什么它不應該作業。
基本上,當您執行 find_all 時,您會得到一個包含它找到的所有元素的串列。所以它所做的是首先獲取頁面上的每條評論,然后像以前一樣遍歷每條評論并獲取每條評論的所有影像。
rating=0
count=0
rawRatings = soup.find_all("span", {"class": "stelutze"})
for i in rawRatings:
rawRating = i.find_all("img")
for j in rawRating:
if "star_full.gif" in j.get("src"):
rating = 1
count = 1
if count == 10:
print(rating)
rating = 0
count = 0
如果您有任何問題,請告訴我
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/468753.html
上一篇:來自谷歌開發人員工具的JSON鏈接在Python(或瀏覽器)中不起作用
下一篇:網頁抓取無序串列問題
