使用BeautifulSoup刮取网站,使用不变的URL

时间:2015-07-06 21:21:07

标签: python web-scraping beautifulsoup

我之前曾进行过网络编排,但是我在尝试从RottenTomatoes /搜索中搜索时遇到了一些我以前从未见过的问题。这个问题是双重的。 (我正在等待我的API请求被'验证',并且不幸的是,烂番茄没有所有电影的列表,呃)

  1. 页面右下方有一个“更多电影”链接,必须“点击”才能显示电影。据我所知,Python没有这样的东西可以与之交互......或者是吗?
  2. enter image description here

    1. 即使单击“更多电影”链接,当我尝试浏览/遍历所有页面时,顶部的URL也不会更改。这似乎是BeautifulSoup的一个问题。
    2. enter image description here

      有任何建议/提示吗?

1 个答案:

答案 0 :(得分:2)

使用beautifulsoup确实无法直接实现这一点,因为beautifulsoup处理静态网页。您要抓取的内容将通过JavaScript添加到页面中,而不是添加到HTML中。

按钮'更多电影'调用一个javascript函数,可能会有一些AJAX函数调用更多的电影。

在某些情况下,您可以访问更多电影'容易:

  • 有时数据已存在于源中,但已隐藏。 javascript使这个可见
  • javascript使用api加载其内容,然后可以在源代码中找到此API网址,如果直接转到该链接,您可以找到所需内容。

然而,对于rottentomatoes来说,上述情况似乎都不是。我快速看了一下,也许你应该更彻底地调查它。

我过去使用的解决方案是:Selenium。它有一个易于使用的python库,允许您自动化浏览器行为。这样你就可以自动地#39;在抓取时点击加载更多按钮。

小心但是,这可能会很慢并且耗费资源。你可以无头地运行它,这使它无法打开浏览器并节省一些资源。