Size: a a a

2020 July 11

AS

Alexandr Step in Scrapy
r4khic
Ребят у кого нибудь случайно скриптиков которые парсят новостные ресурсы через сайтмап не завалялись ?
мне кажется если на github поискать, то там можно найти абсолютно ВСЁ! Ну конечно там не будет кода который решает Вашу задачу 1 в 1, но можно найти хорошую заготовку в которой внести минимум изменений. ИМХО
источник

SS

Stanislav Sagan in Scrapy
Здавствуйте, я в скрапере собираю структуру что-то вроде:
yield {
   'id' : ...
   'name': ...
   'reviews': [
       ...
   ]
}

Но чтоб собрать отзывы (reviews) мне нужно их как-то забрать у функции которая тоже ходит по пагинации. Ну то есть yield-ит либо 1 review либо yield-ит новую ссылку для скачивания следующих review

Как мне это организовать? Нужно ли разбивать на 2 скрапера может? Если да - будут ли у них общие куки?

Либо просто направьте как такой, не совсем тривиальный пример
источник

A

Andrii in Scrapy
Stanislav Sagan
Здавствуйте, я в скрапере собираю структуру что-то вроде:
yield {
   'id' : ...
   'name': ...
   'reviews': [
       ...
   ]
}

Но чтоб собрать отзывы (reviews) мне нужно их как-то забрать у функции которая тоже ходит по пагинации. Ну то есть yield-ит либо 1 review либо yield-ит новую ссылку для скачивания следующих review

Как мне это организовать? Нужно ли разбивать на 2 скрапера может? Если да - будут ли у них общие куки?

Либо просто направьте как такой, не совсем тривиальный пример
Scrapy Items
источник

SS

Stanislav Sagan in Scrapy
Andrii
Scrapy Items
Хм. Что-то до этого места не дочитал. Сейчас гляну
источник

К

Кирилл in Scrapy
Stanislav Sagan
Здавствуйте, я в скрапере собираю структуру что-то вроде:
yield {
   'id' : ...
   'name': ...
   'reviews': [
       ...
   ]
}

Но чтоб собрать отзывы (reviews) мне нужно их как-то забрать у функции которая тоже ходит по пагинации. Ну то есть yield-ит либо 1 review либо yield-ит новую ссылку для скачивания следующих review

Как мне это организовать? Нужно ли разбивать на 2 скрапера может? Если да - будут ли у них общие куки?

Либо просто направьте как такой, не совсем тривиальный пример
Забирать не нужно, передавай данные в следующий калбэк через https://docs.scrapy.org/en/latest/topics/request-response.html#passing-additional-data-to-callback-functions
источник

К

Кирилл in Scrapy
Собираешь базовые данные, передаёшь в калбэк нужного реквеста, в котором добавляешь дополнительные данные и йелдишь
источник

SS

Stanislav Sagan in Scrapy
Кирилл
Собираешь базовые данные, передаёшь в калбэк нужного реквеста, в котором добавляешь дополнительные данные и йелдишь
ага, я понял что я часть документации не прочитал. Спасибо что направили
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
есть вот такой кусок кода:
def _extract_phones(self, itemID):

       get_phone = 'https://site.ru/api/1/items/%s/phone?key=%s' % (itemID, X_KEY)
       yield scrapy.Request(get_phone, callback=self._ex_phones)

   def _ex_phones(self, response):
       r2 = response
       self.logger.info(":R2: "+ str(r2))
       if not 'code": 403' in r2.text and r2.status_code == 200 and 'call?number=' in r2.text:
           num = r2.text.replace('%2B', '+').split('call?number=')[1].split('"')[0]
       else:
           num = "нет данных"
       return num
почему он возвращает <generator object ??
источник

AR

Andrey Rahmatullin in Scrapy
что ещё ему возвращать?
источник

AR

Andrey Rahmatullin in Scrapy
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
да но ведь там есть callback и судя по примерам должно обрабатіваться и получаться тело ответа
источник

AR

Andrey Rahmatullin in Scrapy
не знаю о чём ты
источник

AR

Andrey Rahmatullin in Scrapy
_extract_phones() возвращает генератор
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
ок, как тогда выполнить запрос и получить ответ?
источник

AR

Andrey Rahmatullin in Scrapy
понятия не имею, остального кода-то не видно
источник

AR

Andrey Rahmatullin in Scrapy
если _extract_phones сделан генератором по ошибке, просто поменять в нём yield на return
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
ага, попробую
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
Andrey Rahmatullin
если _extract_phones сделан генератором по ошибке, просто поменять в нём yield на return
теперь выходит просто сформированый гет-запрос. А как получить от него ответ, тело?
источник

AR

Andrey Rahmatullin in Scrapy
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
читал, все равно не понятно как это применить. Запрос у меня ж получился.
Почему он не выполняется?
источник