使用Python Scrapy刮取优惠券Websi

2024-05-09 14:49:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从这个网站上获取优惠券代码:https://www.cuponation.com.sg/zalora-coupon

我只想要代码(通常在用户单击“查看代码”后显示,优惠券代码将在新选项卡中打开,而原始选项卡将重新指向商家的网站)请注意,我只想要代码,因此不想单击“查看折扣”按钮。你知道吗

我附加了一些摘要代码,还尝试在单击“查看代码”之后查看网络请求,以便让python发送正确的网络请求来刮取优惠券代码,但似乎无法做到这一点。唯一的替代方法似乎是使用Selenium来模拟用户的点击,但是这太单调了,而且资源太多。相反,Python有没有办法触发正确的网络请求,并将所有代码输出到json文件以供查看。你知道吗

尝试修改下面的摘要代码,但似乎无法识别为获取优惠券代码而触发的正确网络请求。你知道吗

from scrapy.http import Request
from scrapy.item import Item, Field
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider


class VoucherItem(Item):
    voucher_id = Field()
    code = Field()


class CuponationSpider(BaseSpider):
    name = "cuponation"
    allowed_domains = ["cuponation.in"]
    start_urls = ["https://www.cuponation.in/babyoye-coupons"]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        crawled_items = hxs.select('//div[@class="six columns voucher-btn"]/a')
        for button in crawled_items:
            voucher_id = button.select('@data-voucher-id').extract()[0]

            item = VoucherItem()
            item['voucher_id'] = voucher_id
            request = Request("https://www.cuponation.in/clickout/index/id/%s" % voucher_id,
                              callback=self.parse_code,
                              meta={'item': item})
            yield request

    def parse_code(self, response):
        hxs = HtmlXPathSelector(response)

        item = response.meta['item']
        item['code'] = hxs.select('//div[@class="code-field"]/span/text()').extract()

        return item

预期产量:

{"voucher_id": "5735", "code": ["MUM10"]}
{"voucher_id": "5446", "code": ["APP20"]}
{"voucher_id": "3963", "code": ["CNATION150"]}

Tags: 代码infromimport网络idresponsecode