#python #web-scraping #scrapy
Вопрос:
Я пытаюсь обойти этот сайт, который требует, чтобы я заполнил форму с почтовым индексом, чтобы получить информацию о магазинах. веб-сайт: https://www.aldi-sued.de/de/filialen.html
Я написал следующий код, но не знаю, что не так. Пожалуйста, помогите:
from __future__ import unicode_literals
import logging
import scrapy
from scrapy.loader import ItemLoader
from ..items import StoreItem
logger = logging.getLogger(__name__)
class StoreSpider(scrapy.Spider):
name = "aldib"
start_urls = ["https://www.aldi-sued.de/de/filialen.html"]
def parse(self, response):
yield scrapy.FormRequest(url="https://www.aldi-sued.de/de/filialen.html",
formdata={"search": "38644"},
callback=self.parse_stores)
def parse_stores(self, response):
for store in response.css('div.dealer-list > div.dealer-item-content'):
name = store.xpath("span.dealer-name > strong::text").extract()
sl = ItemLoader(item=StoreItem(), selector=store, response=response)
sl.add_value("Name", name)
yield sl.load_item()
Я подозреваю, что на веб-сайте есть 2 формы: одна для поиска по сайту и одна для поиска в магазине, и я не могу выбрать, какая из них указана в первом коде. Поэтому я изменил часть запроса на
def parse(self, response):
yield scrapy.FormRequest.from_response(response,
formid="storeSearchForm",
formdata={"search": "38644"},
callback=self.parse_stores)
В конце концов, я все еще не могу найти названия магазинов по этому почтовому индексу.