当页面偏移值永无止境时如何进行网页抓取

How to web scrape when page offset value never ends

提问人:knightcool 提问时间:9/7/2020 更新时间:9/7/2020 访问量:184

问:

我正在尝试使用 BeautifulSoup 从 https://sofifa.com 中抓取玩家数据。每个页面显示 60 个玩家,因此我使用偏移查询参数(例如 https://sofifa.com/players?offset=60 显示第 2 页)来访问所有玩家的信息。

我注意到的一件事是偏移值永远不会结束(即无论我提供的偏移值有多大,它总是向我显示一页)。具体来说,我注意到对于 20000 左右>偏移量,它总是显示第 1 页(基本上在耗尽所有玩家之后,它会滚动到第 1 页,并且对于所有后续更高的偏移值,它总是显示它)。试着和 https://sofifa.com/players?offset=20000000 一起了解我的意思。

我想知道是否有任何方法可以以编程方式找出最后一个“有效”偏移值;超过它,我一定会拿回第一页。这将帮助我确定何时到达数据集的末尾。

目前我是这样抓取的:

for offset in range(0, 20000, 60):
  try:
    print("Processing page at offset " + str(offset))
    sofifa_url = "https://sofifa.com/players?offset=" + str(offset)
    # start scraping the page
    :
    :
  except Exception as e:
    print("Exception occured: " + str(e))
    continue
蟒蛇 python-3.x 网页抓取 beautifulsoup

评论

0赞 Maciek 9/7/2020
有点明显/幼稚的问题,但是在检索连续偏移量的同时,为什么不在内容上构建停止条件呢?如果我理解得很好,这里的每条记录都应该是独一无二的。
0赞 baduker 9/7/2020
一种方法是检查是否有下一个按钮,并在到达最后一页时停止抓取。
0赞 knightcool 9/8/2020
@Maciek两件事:该网站上的内容是动态的。定期更新。此外,跟踪要匹配的抓取内容似乎有点占用内存。
0赞 knightcool 9/8/2020
@baduker 与该网站上的下一个按钮相比,“上一页”按钮似乎是一种更好的方式(因为上一页也有“下一页”按钮,但第一页没有“上一页”。我知道这是一个可能的解决方案,但要注意看看是否有更复杂的解决方案。
0赞 Maciek 9/8/2020
@knightcool:如果内容是可变的,那么我想,你唯一能做的就是在给定的时间点下载它的快照。在这种情况下,只需跟踪一条(第一条)记录,即可发现偏移量已翻转。否则,如果您想让内容始终保持最新状态,则需要不断将下载的版本与在线版本进行比较,这当然比在下载时仅比较一条记录要麻烦得多。

答: 暂无答案