猿问

网页抓取空白返回 - 错误元素

我正在使用代码来网络抓取客户评论。一切都按照我希望代码执行的操作进行,但我无法正确获取评级的类或属性,因此代码始终返回该Ratings列的空白结果。


有人可以帮我找到正确的属性并修复Ratings代码行吗?


from bs4 import BeautifulSoup

import requests

import pandas as pd

import json

print ('all imported successfuly')


# Initialize an empty dataframe

df = pd.DataFrame()

for x in range(1, 37):

    names = []

    headers = []

    bodies = []

    ratings = []

    published = []

    updated = []

    reported = []


    link = (f'https://www.trustpilot.com/review/fabfitfun.com?page={x}')

    print (link)

    req = requests.get(link)

    content = req.content

    soup = BeautifulSoup(content, "lxml")

    articles = soup.find_all('article', {'class':'review'})

    for article in articles:

        names.append(article.find('div', attrs={'class': 'consumer-information__name'}).text.strip())

        headers.append(article.find('h2', attrs={'class':'review-content__title'}).text.strip())

        try:

            bodies.append(article.find('p', attrs={'class':'review-content__text'}).text.strip())

        except:

            bodies.append('')


        try:

            #ratings.append(article.find('div', attrs={'class':'star-rating star-rating--medium'}).text.strip())

            ratings.append(article.find('div', attrs={'class': 'star-rating star-rating--medium'})['alt'])

        except:

            ratings.append('')

        dateElements = article.find('div', attrs={'class':'review-content-header__dates'}).text.strip()


        jsonData = json.loads(dateElements)

        published.append(jsonData['publishedDate'])

        updated.append(jsonData['updatedDate'])

        reported.append(jsonData['reportedDate'])

HUWWW
浏览 78回答 1
1回答

交互式爱情

只需更改代码中的这一行:ratings.append(article.find_all("img", alt=True)[0]["alt"])df.Rating然后输出到:0            1 star: Bad1     5 stars: Excellent2     5 stars: Excellent3     5 stars: Excellent4     5 stars: Excellent5     5 stars: Excellent6     5 stars: Excellent在文章中找到img标签并从中检索替代文本似乎更容易。
随时随地看视频慕课网APP

相关分类

Html5
我要回答