【发布时间】:2023-03-30 17:25:01
【问题描述】:
我试图在 href Here 中提取嵌套的 url,这样我就可以为我的蜘蛛创建一个“下一页”xpath 选择器,但我无法找出正确的位置路径。
我一直在 Scrapy shell 环境中测试我的代码
这是我的蜘蛛源代码 - 使用 python3
import scrapy class StarbucksSpider(scrapy.Spider):
name = 'starbucks'
allowed_domains = ['gameflip.com/shop/gift-cards/starbucks']
start_urls = ['https://gameflip.com/shop/gift-cards/starbucks?limit=36&platform=starbucks&accept_currency=USD&status=onsale']
def parse(self, response):
slots = response.xpath('//*[@class="listing-detail view-grid col-6 col-md-4 col-lg-3 col-xl-2"]')
for slot in slots:
fullPrice = slot.xpath('.//*[@class="col-12 description normal"]/text()').extract_first()
Discount = slot.xpath('.//*[@class="badge badge-success listing-discount"]/text()').extract_first()
price = slot.xpath('.//*[@class="money"]/text()').extract_first()
status = slot.xpath('.//*[@alt="sold"]/@alt').extract_first()
print ('\n')
print (status)
print (fullPrice)
print (Discount)
print (price)
print ('\n')
next_PageUrl = response.xpath('//*[@class="btn"]/@href').extract_first()
absoulute_next_page_url = response.urljoin(next_PageUrl)
yield scrapy.Request(absoulute_next_page_url)
请不要犹豫,向我提问以更好地帮助您回答。 任何帮助表示赞赏;D
感谢您的宝贵时间和回答!
【问题讨论】:
-
我认为你需要 selenium 或 scrapy-splash 来提取数据。这个网站使用了不抓取scrapy的javascript。
-
网站 url 正在使用 API 来填充页面。你可以看到输出here。您可以使用
request和urllib库来处理获取。否则@SamsulIslam 上面所说的是你如何处理 javascript DOM。
标签: python-3.x web-scraping xpath scrapy scrapy-shell