使用 BeautifulSoup 并保持不变 URL 抓取网站

Scraping website using BeautifulSoup with unchanging URL

我之前进行过网络抓取,但在尝试从 RottenTomatoes/search 中抓取时,我 运行 遇到了一些以前从未见过的问题。这个问题是双重的。 (我正在等待我的 API 请求成为 'validated',不幸的是烂番茄没有所有电影的列表,呃)

  1. 页面右下角有一个 "More Movies" link 必须 "clicked" 才能调出电影。据我所知,Python 没有类似的东西可以与之互动......或者有吗?

  1. 即使单击 "More Movies" link,当我尝试 navigate/iterate 浏览所有页面时,顶部的 URL 也不会改变。这似乎是 BeautifulSoup.
  2. 的问题

任何recommendations/tips?

这确实不能通过使用 beautifulsoup 直接实现,因为 beautifulsoup 处理静态网页。您要抓取的内容正在通过 JavaScript 添加到页面,而不是嵌入到 HTML。

按钮 'More movies' 调用一个 javascript 函数,该函数可能会调用一些 AJAX 函数以获取更多电影。

有几种情况下您可以轻松访问 'more movies':

  • 有时数据已经存在于源中,但被隐藏了。 javascript 使它可见
  • javascript使用了一个api来加载它的内容,这个APIurl然后可以在源代码中找到,你可以找到你要找的东西因为如果你直接去 link.

然而,上面的 none 似乎是烂番茄的情况。我快速浏览了一下,也许你应该更彻底地调查一下。

我过去使用的解决方案是:Selenium。它有一个易于使用的 python 库,可让您自动执行浏览器行为。这样您就可以 'automatically' 在抓取时单击“加载更多”按钮。

注意 但是,这可能会很慢并且会消耗资源。您可以 运行 它是无头的,这样它就不会打开浏览器并节省一些资源。