【问题标题】:How to use python to press the “load more” in imdb to get more reviews如何使用python在imdb中按“加载更多”以获得更多评论
【发布时间】:2018-05-27 01:58:13
【问题描述】:

我现在正在创建一个网络爬虫,我想从 imdb 中抓取用户评论。从原始页面直接获取 10 条评论和评分很容易。例如http://www.imdb.com/title/tt1392170/reviews 问题是要获得所有评论,我需要按“加载更多”,以便在url地址不变的情况下显示更多评论!所以我不知道如何才能获得 Python3 中的所有评论。我现在使用的是请求,bs4。

我现在的代码:

from urllib.request import urlopen, urlretrieve
from bs4 import BeautifulSoup


url_link='http://www.imdb.com/title/tt0371746/reviews?ref_=tt_urv'
html=urlopen(url_link)

content_bs=BeautifulSoup(html)

for b in content_bs.find_all('div',class_='text'):
print(b)

for rate_score in content_bs.find_all('span',class_='rating-other-user-rating'):
print(rate_score)

【问题讨论】:

  • 查看名为 selenium 的库,让 python 执行自动化任务,例如单击按钮等
  • 或者您可以使用从 chrome 网络选项卡 http://www.imdb.com/title/tt0371746/reviews/_ajax?ref_=undefined&paginationKey=cyi4vu2uxjyffy4ynotlm45pxfmyxwf7xdnnirxpj2oplatil4zhp7rll6tnyzpbo7u5curqcymq2 获得的分页请求。您需要从第一页中提取分页键并将其传递给上述请求,以加载下一页。

标签: python beautifulsoup web-crawler imdb


【解决方案1】:

如果不启动点击事件,您将无法按下加载更多按钮。但是,BeautifulSoup 没有该属性。但是,你可以做些什么来获得完整的内容,就像我在下面展示的那样。它将获取您所有的 review title 以及 reviews

import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

url = 'http://www.imdb.com/title/tt0371746/reviews?ref_=tt_urv'
res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")

main_content = urljoin(url,soup.select(".load-more-data")[0]['data-ajaxurl'])  ##extracting the link leading to the page containing everything available here
response = requests.get(main_content)
broth = BeautifulSoup(response.text,"lxml")

for item in broth.select(".review-container"):
    title = item.select(".title")[0].text
    review = item.select(".text")[0].text
    print("Title: {}\n\nReview: {}\n\n".format(title,review))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    相关资源
    最近更新 更多