我正在做我的第一个零碎的项目,从一个相当简单的网站stockx开始。
我想抓取不同类别的项目。如果我使用下面的URL作为我的start_url。我如何解析每个start_URL?
第一个字符串
产品页面的结构通常如下所示:
https://stockx.com/air-max-90-patta-homegrown-grass
我正在尝试通读有关此主题的文档,但无法完全理解。
我知道下面是不正确的,因为我强制了一个结果URL列表,只是不确定在第一次解析中应该如何处理多个start_urls。
def parse(self, response):
#obtain number of pages per product category
text = list(map(lambda x: x.split('='),
response.xpath('//a[@class="PagingButton__PaginationButton-sc-1o2t560-
0 eZnUxt"]/@href').extract()))
total_pages = int(text[-1][-1])
#compile a list of URLs for each result page
cat =['sneakers','streetwear','collectibles','handbags','watches']
cat = ['https://stockx.com/{}'.format(x) for x in cat]
lst=[]
for x in cat:
for y in range (1,total_pages+1):
result_urls=lst.append(x+'?page={}'.format(y))
for url in result_urls[7:9]:
# print('Lets try: ', url)
yield Request(url=url, callback=self.parse_results)
3条答案
按热度按时间vxqlmq5t1#
试试这样-
lqfhib0f2#
简单的解决方案是使用
start_urls
:https://doc.scrapy.org/en/1.4/topics/spiders.html#scrapy.spiders.Spider.start_urls您甚至可以控制
start_requests
。d5vmydt93#
你可以使用列表解析来代替初始的start_urls列表。
注意:请不要运行这个,这只是为了激发灵感。我在一个项目中做了类似的事情(懒得再查一遍),它成功了。它节省了你创建一个自定义start_requests函数的时间。
我使用的网址***不存在***这只是一个例子,你可以做的事情。
这里的主要思想***是使用一个列表解析来代替默认的start_urls列表***,这样就不必创建一个花哨的函数。