如何在div另一个标记中提取span标记

2024-10-02 20:40:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一段代码,使用beautifulsoup从IMDB中提取用户名及其等级。但也有很多用户没有给他们的评论评分。很难准确地将评分与他们的评论对应起来。那我该怎么做呢? http://www.imdb.com/title/tt2866360/reviews?ref_=tt_ov_rt 在这个网址评论不分配评级。在

url1 ="http://www.imdb.com/title/tt2866360/reviews?ref_=tt_ov_rt"

response = requests.get(url1, headers=headers)

page=response.content

soup=BeautifulSoup(page)

for k in soup.findAll('div',{"class":"load-more-data"}):

    if k.name == 'span' and m['class'] == "rating-other-user-rating":
        print blah()
    else:
        print blah 1()

这是检查评分部分是否存在于评审部分,但没有返回任何内容的代码?在


Tags: 代码comrefhttptitlewww评论评分
2条回答

我建议你应该试着去控制每篇评论的<div class="review-container" ...中的内容。然后选择要检索的特定数据。在

您要查找的信息(用户名、评级)位于'部门审查-集装箱标签。
关于没有评级的标签,你可以忽略它们。在

for k in soup.find_all('div',{"class":"review-container"}):
    rating = k.find('span', class_='rating-other-user-rating')
    if rating:
        rating = ''.join(i.text for i in rating.find_all('span')[-2:])
    name = k.find('span', class_='display-name-link').text
    print name, rating

按“加载更多”按钮时显示的信息将通过XHR请求加载。
您将在一个'分配负荷-更多数据标签。在

^{pr2}$

只要重复上述过程,直到你得到所有的信息。在


import requests
from bs4 import BeautifulSoup

url = "http://www.imdb.com/title/tt2866360/reviews?ref_=tt_ov_rt"
ajax_url = url.split('?')[0] + "/_ajax?paginationKey={}"
reviews = []

while True:
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')

    for k in soup.find_all('div',{"class":"review-container"}):
        rating = k.find('span', class_='rating-other-user-rating')
        if rating:
            rating = ''.join(i.text for i in rating.find_all('span')[-2:])
        name = k.find('span', class_='display-name-link').text
        reviews.append([name, rating])
        print name, rating

    load_more = soup.find('div', class_='load-more-data')
    if not load_more:
        break
    url = ajax_url.format(load_more['data-key'])

相关问题 更多 >