Я пытаюсь обработать предложения Groupon, используя следующую ссылку :
Когда я запускаю это из оболочки scrapy shell
, я вижу все предложения на странице.
например titles = response.css('figure.card-ui').css('div.cui-udc-title-with-subtitle ::text').getall()
получает 37 названий.
Обстрел снаряжения заставляет меня:
>>> titles = response.css('figure.card-ui').css('div.cui-udc-title-with-subtitle ::text').getall()
>>> titles = [ title.rstrip().lstrip() for title in titles ]
>>> len(titles)
37
>>> titles
[u'Le Bar du Normandy - H\xf4tel Normandy', u'Michel Balmet', u'Passion Chocolat', u'Le Caf\xe9 Clairi\xe8re', u'LES CAVES DU LOUVRE', u"L'artiste Restaurant", u'Auberge Le Relais', u'Le Caf\xe9 des Initi\xe9s', u'La Mar\xe9e (75008)', u'Ko\xef', u'Casa Paco (75116)', u'Capitaine Fracasse', u'LePergol\xe8se', u'Wine Tours Paris', u'La Maison Du Rhum', u'Au Port du Salut', u'Grains Nobles', u"L'artiste Restaurant", u'Michel Balmet, 10e', u'Feyrouz C\xf4t\xe9 Mer', u"L'agap\xe9", u"Restaurant Au Bon'art", u'Shibuya Karaok\xe9', u'Eiffel Croisieres', u'Cfv', u'Made In Italy', u'Fuumi Restaurant', u'OfbPontault', u'Le Jackpot', u'La Brasserie Centrale', u'Le cheval blanc', u'LA CANTINE DES TSARS', u'Restaurant Guy Savoy \xe0 la Monnaie de Paris', u'Chez Ma Cousine', u'MAMABALI', u'LE COSMOS', u'Restaurant Le Sancerre']
>>>
Когда я запускаю это из скребка, я получаю только небольшое подмножество результатов:
class GrouponSpider(scrapy.Spider):
name = "deals"
start_urls = [
'https://www.groupon.fr/browse/paris?category=bars-et-restaurants&=undefined&gclid=Cj0KCQjwo7foBRD8ARIsAHTy2wm4-T4w6ps1KMDg5eG8S7jDsNco8VxuJIcoQO6OXkSrzQm4TWEe-QkaArFXEALw_wcB&utm_campaign=fr_dt_sea_ggl_txt_naq_sr_cbp_ch1_ybr_k*groupon%2Bparis_m*e_d*Groupon-Paris_g*Paris-Exact_c*96685051824_ap*1t1&utm_medium=cpc&utm_source=google&page0'
]
def parse(self, response):
titles = response.css('figure.card-ui').css('div.cui-udc-title-with-subtitle ::text').getall()
titles = [ title.rstrip().lstrip() for title in titles ]
for title in titles:
yield { 'title' : title }
next_page = response.css('a.next::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, callback=self.parse)
В этом случае я получаю следующее (работает с флагами -o items.csv -t csv
), которое является небольшим подмножеством всех результатов:
$ cat items.csv
title
Le Bar du Normandy - Hôtel Normandy
Michel Balmet
Passion Chocolat
Le Café Clairière
Auberge Le Relais
La Marée (75008)
L'artiste Restaurant
Есть идеи, как получить полные результаты из кода скребка?