gpt4 book ai didi

python - 使用 Scrapy 抓取游戏商店时出现问题 - 如果有折扣和处理 null,HTML 会发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:47 24 4
gpt4 key购买 nike

我正在尝试使用 Scrapy 来抓取一系列游戏商店,但它们都遇到了同样的问题。我使用的是 XPath,游戏价格的 HTML 会根据价格是简单标记为 £ 20.09 还是标记为 £ 20.09 并在其中划线然后 £ 14.49 显示折扣。我很高兴有两列,是 20.09(将包含空值)和 现在是 14.49 之后的一列,但我不知道如何获得空值而不是仅仅取代以下所有内容。

这是我的网站 cdkeys 代码 - https://www.cdkeys.com/pc/games?limit=50有打折和没有打折的游戏。

allowed_urls = ['https://www.cdkeys.com/pc/games?limit=50?']
start_urls = ['https://www.cdkeys.com/pc/games/{pageno}?limit=50'.format(pageno=pageno)
for pageno in range(1, 10)]

def parse(self, response):
Games = response.xpath('//*[@id="root-wrapper"]/div/div[1]/div[2]/div[3]/div[2]/div[2]/ul/li/h2/a/text()').extract()
Prices = response.xpath('//span[starts-with(@id, "product-price-")]/span[1]/span/text()').extract()
for i, (Game, Price) in enumerate(zip(Games, Prices)):
yield {'index': i, 'Game': Game, 'Price':Price}

问题出在价格的 XPath 中,我可以获得只有折扣价的列表,或者只有没有折扣的游戏的价格列表,因为这些类别的 HTML 完全不同。

阻止我简单地创建两个列表的是因为我使用的是 zipenumerate 它只是迭代第一个 x 数量直到价格用完为止,而不是将每个游戏链接到相应的价格。

如果您能在 Prices 中仅显示正确的价格,或者找到一种使用空值而不是替换以下值的方法,我们将不胜感激。我对 python 和网络爬虫都是新手,只是想了解这一切。

最佳答案

我会采用不同的方式 - 逐一遍历产品项目,然后找到游戏名称、正常价格和折扣价:

def parse(self, response):
for game in response.css("ul.products-grid li.item"):
name = game.css("h2.product-name > a::text").extract_first()
old_price = game.css(".regular-price .price::text,.old-price .price::text").extract_first()
discount_price = game.css(".special-price .price::text").extract_first()

yield {
"name": name,
"old_price": old_price,
"discount_price": discount_price
}

对于第一页,您将获得以下输出:

{'old_price': u'$ 13.59', 'name': u'Stellaris: Utopia PC DLC', 'discount_price': None}
{'old_price': u' $ 9.49 ', 'name': u'Insurgency PC', 'discount_price': u' $ 1.99 '}
...
{'old_price': u' $ 81.59 ', 'name': u'Call of Duty Black Ops II 2 Digital Deluxe Edition PC ', 'discount_price': u' $ 13.59 '}

注意旧价格是如何填写有和没有折扣的。

关于python - 使用 Scrapy 抓取游戏商店时出现问题 - 如果有折扣和处理 null,HTML 会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129892/

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