【问题标题】:How to use python to press the "load more" in imdb如何使用python在imdb中按下“加载更多”
【发布时间】:2017-12-12 21:49:19
【问题描述】:

我现在正在创建一个网络爬虫,我想从 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)

【问题讨论】:

  • 对不起,如果这听起来很刺耳,但这与 python 无关。另外,如果您希望人们帮助您,请务必附上mcve
  • 我现在更新了我的代码。我只是想知道如何让我的网络爬虫变得更好。

标签: python nlp web-crawler python-requests


【解决方案1】:

通过捕捉网络事件,我得出了这个结论。该按钮在网页中是这样定义的:

<div class="load-more-data" data-key="xxdr3yxoixpwgjg7c6vq44huu6hi6xe5qywg3adr43xlnl5sas6df5ed53iunemqakizscc53xq32" data-ajaxurl="/title/tt1392170/reviews/_ajax">
...
</div>

注意这两件事,

  • 数据键
  • 数据-ajaxurl

点击按钮后,网络浏览器通过 AJAX 加载此 URL:

http://www.imdb.com/title/tt1392170/reviews/_ajax?paginationKey=xxdr3yxoixpwgjg7c6vq44huu6hi6xe5qywg3adr43xlnl5sas6df5ed53iunemqakizscc53xq32

http://www.imdb.com/{data-ajaxurl}?paginationKey={data-key}

【讨论】:

  • 这是一个好方法。我访问这个 url,我可以获得更多评论列表,但它不包含新的 ajax 信息。所以我仍然无法创建一个自动循环来迭代所有评论。
  • @EricZhang 确实如此。按照链接查看返回的 HTML 代码的最后,您会看到:
  • 循环使用替换你的“paginationKey”,然后你会得到评论。
  • 天哪!有用!现在我想我可以循环所有的 cmets!谢谢!
猜你喜欢
相关资源
最近更新 更多
热门标签