Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 页面偏移值永不结束时如何进行web刮取_Python_Python 3.x_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 页面偏移值永不结束时如何进行web刮取

Python 页面偏移值永不结束时如何进行web刮取,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我正试图从使用BeautifulSoup中删除玩家数据。每页显示60名玩家,因此我使用offset query param(例如显示第二页)访问所有玩家的信息 我注意到的一点是,偏移值永远不会结束(即,无论我提供的偏移值有多大,它总是显示一个页面)。特别是,我注意到,对于偏移量>20000左右,它总是显示第一页(基本上是在耗尽所有玩家的精力后,它有点滚动到第一页,并且总是显示所有后续更高偏移量值的第一页)。试着理解我的意思 我想知道是否有任何方法可以通过编程找出最后一个“有效”偏移值;除此之外,

我正试图从使用BeautifulSoup中删除玩家数据。每页显示60名玩家,因此我使用offset query param(例如显示第二页)访问所有玩家的信息

我注意到的一点是,偏移值永远不会结束(即,无论我提供的偏移值有多大,它总是显示一个页面)。特别是,我注意到,对于偏移量>20000左右,它总是显示第一页(基本上是在耗尽所有玩家的精力后,它有点滚动到第一页,并且总是显示所有后续更高偏移量值的第一页)。试着理解我的意思

我想知道是否有任何方法可以通过编程找出最后一个“有效”偏移值;除此之外,我肯定能把第一页拿回来。这将帮助我决定何时到达数据集的末尾

目前我是这样刮的:

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

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