使用 beautifulsoup 进行网页抓取

Webscraping using beautifulsoup

我正在尝试使用 python3.6 从 Imdb 电影中抓取评论。但是,当我打印 'review' 时,只弹出 1 条评论,我不确定为什么其他评论没有弹出。我的 'review_title' 不会发生这种情况。非常感谢任何建议或帮助,因为我一直在搜索论坛和谷歌搜索但无济于事。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

url = urlopen('http://www.imdb.com/title/tt0111161/reviews?ref_=tt_ov_rt').read()

soup = BeautifulSoup(url,"html.parser")

print(soup.prettify())

review_title = soup.find("div",attrs={"class":"lister"}).findAll("div",{"class":"title"})
review = soup.find("div",attrs={"class":"text"})
review = soup.find("div",attrs={"class":"text"}).findAll("div",{"class":"text"})
rating = soup.find("span",attrs={"class":"rating-other-user-rating"}).findAll("span")

在不创建任何循环的情况下如何访问该页面的所有内容?您编写脚本的方式正是在做它应该做的事情(解析单个评论内容)。请尝试以下方式。它将为您获取所有可见数据。

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = urlopen('http://www.imdb.com/title/tt0111161/reviews?ref_=tt_ov_rt').read()
soup = BeautifulSoup(url,"html.parser")
for item in soup.find_all(class_="review-container"):
    review_title = item.find(class_="title").text
    review = item.find(class_="text").text
    try:
        rating = item.find(class_="point-scale").previous_sibling.text
    except:
        rating = ""
    print("Title: {}\nReview: {}\nRating: {}\n".format(review_title,review,rating))