JRazor
@JRazor
Senior StarkOverFlow Programmer

Scrapy: Response, Request — как получить значение?

Здравствуйте.

Имеется сайт, который отсылает запросы к себе на сервер. Собственно, хочет просто самому отсылать эти запросы и забирать ответы.

С сайта запрос выглядит так:

ad72795d98ef4664b030a6fd1bda17c1.jpg

Я хочу получить данные, которые в Chrome находятся в Response и Preview:

945a9b1f284d432e805742267700642b.jpg

Подскажите, как?
  • Вопрос задан
  • 3787 просмотров
Пригласить эксперта
Ответы на вопрос 1
ehles
@ehles
Делаем запрос примерно так:
import json
from scrapy.contrib.spiders import CrawlSpider

class my_super_spider(CrawlSpider):
    start_urls = ["http://domain.com"]
    url = "http://domain.com/?postcode=123&sku=blablabla"
    def parse(self, response):
        # Тут можно распарсть response (ответ на запрос из start_urls) или просто нагенерить
        # новых запросов, или и то и другое.
        yield Request(url, callback=self.parse_my_url)
    def parse_my_url(self, response):
        # Если сайт отдает ответ в виде json то так:
        data_from_json = json.loads(response.body)
        # Если сайт отдает html то так:
        # xpath можно узнать в панели отладки хрома (правой кнопкой мышки на элементе), например:
        xpath_name = '//*[@id="global"]/div/table/tbody/tr/td[%(col)s]/table/tbody/tr/td/a/text()'
        hxs = HtmlXPathSelector(response)
        column = 100500
        data_from_html = hxs.select(xpath_name % {'col': column}).extract()
        
        # Далее "собираем" items и сохраняем в БД или ещё куда там у вас..


по комментариям в коде должно стать всё понятно.

P.S. как делать тут хорошо описано: doc.scrapy.org/en/latest/topics/spiders.html

P.P.S. Эмулировать куки, со scrapy не надо, он всё сам делает (конечно, если надо, доступ к ним получить можно).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы