Я пытаюсь очистить коды купонов с этого сайта: 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"]}