Python 使用无限滚动更新网页抓取参数

Python 使用无限滚动更新网页抓取参数,python,json,python-3.x,web-scraping,scrapy,Python,Json,Python 3.x,Web Scraping,Scrapy,我不确定应该如何在这里构造代码,以便每次函数递归调用自身时,offset参数都会更新。下面是关于我的脚本和我试图解决的挑战的更多细节。我觉得这里缺少了一些简单的解决方法 将偏移量定义为类属性: class LetgoSpider(scrapy.Spider): name = 'letgo' allowed_domains = ['letgo.com/en'] start_urls = ['https://search-products-pwa.letgo.com/api/

我不确定应该如何在这里构造代码,以便每次函数递归调用自身时,offset参数都会更新。下面是关于我的脚本和我试图解决的挑战的更多细节。我觉得这里缺少了一些简单的解决方法


将偏移量定义为类属性:

class LetgoSpider(scrapy.Spider):
    name = 'letgo'
    allowed_domains = ['letgo.com/en']
    start_urls = ['https://search-products-pwa.letgo.com/api/products?country_code=US&offset=0&quadkey=0320030123201&num_results=50&distance_type=mi']
    offset = 0  # <- here

将偏移量定义为类属性:

class LetgoSpider(scrapy.Spider):
    name = 'letgo'
    allowed_domains = ['letgo.com/en']
    start_urls = ['https://search-products-pwa.letgo.com/api/products?country_code=US&offset=0&quadkey=0320030123201&num_results=50&distance_type=mi']
    offset = 0  # <- here

谢谢我按照您的说明进行了操作,但由于某些原因,我得到了NameError:当我运行
scrapy crawl letgo-o test.json
时,没有定义名称“offset”。我仔细检查了一遍,也没有打错。你知道为什么不给它下定义吗?这可能是因为此Scrapy类是创建新spider时作为模板提供的默认类?抱歉,请重试。在创建新的\u请求时,它应该是
self.offset
。我刚刚编辑了代码。谢谢。越来越近1.它说刮刀正常工作,但它只刮掉了第一个项目。如果len(data)==0:break尝试通过添加几个打印来调试它,我认为这可能与
有关。只是为了了解它在做什么:调用了多少次
parse
?它有多少物体?等等。我第一眼看到的一件事是,
yield{…}
应该在for循环中(而不是在它之后)。是的,调整后的
allowed_domains=['letgo.com/en','search products pwa.letgo.com']
现在可以工作了,谢谢。我按照您的说明进行了操作,但由于某些原因,我得到了NameError:当我运行
scrapy crawl letgo-o test.json
时,没有定义名称“offset”。我仔细检查了一遍,也没有打错。你知道为什么不给它下定义吗?这可能是因为此Scrapy类是创建新spider时作为模板提供的默认类?抱歉,请重试。在创建新的\u请求时,它应该是
self.offset
。我刚刚编辑了代码。谢谢。越来越近1.它说刮刀正常工作,但它只刮掉了第一个项目。如果len(data)==0:break
尝试通过添加几个打印来调试它,我认为这可能与
有关。只是为了了解它在做什么:调用了多少次
parse
?它有多少物体?等等。我第一眼看到的一件事是,
yield{…}
应该在for循环中(而不是在它之后)。是的,调整后的
allowed_domains=['letgo.com/en','search products pwa.letgo.com']
现在可以工作了
self.offset += 50
new_request = 'https://search-products-pwa.letgo.com/api/products?country_code=US&offset=' + str(self.offset) + \
                      '&quadkey=0320030123201&num_results=50&distance_type=mi'
yield scrapy.Request(new_request, callback=self.parse)