Python Beautifulsoup - 点击加载更多按钮

Python Beautifulsoup - click load more button

我正在尝试从 ReelGood.com

中抓取所有 (neftlix) 电影链接

到目前为止,这是我的代码:(在 Stack 成员的帮助下)

from bs4 import BeautifulSoup
import requests
import time

URL = "https://reelgood.com/movies/source/netflix"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")

f = open("C:/Downloaders/test/Scrape/movies_netflix.txt", "w")
for link in soup.select('[itemprop=itemListElement] [itemprop=url]'):
    data = link.get('content')
    f.write(data)
    f.write("\n")

此代码会将电影链接输出到名为 movies_netflix.txt

的 txt 文件

但这里有一个问题,它只导出默认页面中加载的链接。如果向下滚动,您会看到此按钮:

现在我想要的是在抓取之前加载整个页面。 就我个人而言,我正在考虑一个功能,只要它在那里就可以单击按钮(如果所有内容都已加载,它就会消失)。

但我不知道该怎么做,是否有更好的方法将所有电影加载到页面中?

有什么建议吗?

帮助信息

HTML sourcecode

Beautifulsoup 没有点击功能。您可以通过 Selenium 做到这一点,它确实做到了。还有另一个选项允许您只使用 Beautifulsoup.

单击按钮时,url 变为 https://reelgood.com/movies/source/netflix?offset=50

据我所知,偏移量增加了 50 到 3750。

https://reelgood.com/movies/source/netflix?offset=3750 然而并没有显示整个 table,只是最后一页。因此,您可以遍历页面并收集该页面上的所有标题并将其附加到您的列表中。

类似于:

for i in range(0, 3800, 50):
    URL= "https://reelgood.com/movies/source/netflix?offset=" + str(i)
    page = requests.get(URL)
    soup = BeautifulSoup(page.content, "html.parser")

    f = open("C:/Downloaders/test/Scrape/movies_netflix.txt", "w")
    for link in soup.select('[itemprop=itemListElement] [itemprop=url]'):
        data = link.get('content')
        f.write(data)
        f.write("\n")

您还可以考虑删除 for 循环并将页面上的所有电影附加到列表或其他内容,然后最后将整个列表写入文件。否则你将不得不循环 76*50 次,这可能会花费很长时间。