gpt4 book ai didi

python - 如何在 Python 中抓取 Kaggle 数据集的无限滚动页面?

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:56 27 4
gpt4 key购买 nike

我想提取 Kaggle 中所有可用数据集的列表,请参见 URL: kaggle.com/datasets

但是,由于该页面是基于无限滚动的,所以我不能使用一次加载整个页面的传统抓取方法。非常感谢任何建议。

最佳答案

如果您检查浏览器,您会发现每次向下滚动时都会在网络选项卡中发出 AJAX 请求。

请求发送至:

https://www.kaggle.com/datasets.json?sortBy=hottest&group=all&page=2

以 json 格式返回结果。您可以继续 incirmenting page 直到达到最大结果。 json 文件具有关键字 u'totalDatasetListItems': 770 并且每次搜索返回 20 个结果,因此您可以使用该信息来开发循环。

此示例适用于 python3,展示了如何使用这种分页系统获取并发请求。

import scrapy
import json
from w3lib.url import add_or_replace_parameter
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://www.kaggle.com/datasets.json?sortBy=hottest&group=all&page=1']

def parse(self, response):
data = json.loads(response.body)
total_results = data['totalDatasetListItems']
page = 1
# figure out how many pages are there and loop through them.
for i in range(20, total_results, 20): # step 20 since we have 20 results per page
url = add_or_replace_parameter(response.url, 'page', page)
yield scrapy.Request(url, self.parse_page)

# don't forget to parse first page as well!
yield from self.parse_page(self, response)

def parse_page(self, response):
data = json.loads(response.body)
# parse page data here
for item in data['datasetListItems']:
item = dict()
yield item

关于python - 如何在 Python 中抓取 Kaggle 数据集的无限滚动页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42478231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com