2016-12-18 2 views
1

현재 Scrapy에 대한 교육을 받고 있으며 내보내기를 올바르게 포맷하고 싶습니다. 내가 가진 그래서 기본적으로 (프랑스 잘 알려진 분류 된 광고 웹 사이트가 훈련을 긁어)Scrapy - 제대로 포맷 할 수 없습니다 CSV

"600 €,,,850 €,,,850 €,,,850 €,,770 €,,,600 €,,,600 €,,,60 €,,,782 €,,,670 €,,,700 €,,,936 €,,,730 €,,,450 €,,,800 €,,,680 €,,,865 €,,,790 €,,,880 €,,,850 €,,,900 €,,,813 €,,,850 €,,,795 €,,,560 €,,,900 €,,,750 €,,,950 €,,,390 €,,,875 €,,,650 €,,,799 €,,,825 €,,,695 €,,,790 €,,","Studio meublé 10m² GAITE PARIS 14e,,Très joli studio paris 14,,Studio meublé avec mezzanine Porte d'Orléans,,Studio 1 pièce 33 m²,,STUDIO 20m² - Métro ALESIA -St Pierre de Montrouge,,Studio meublé porte d'Orléans,,Location courte durée Studio 14ème Alésia,,Studio paris 14eme libre dec et janv/nuit,,Appartement 2 pièces 29 m²,,Appartement Alésia/14ème arrondissement,,Studio meublé a louer de suite,,STUDIO rue Pernety 75014,,Studio 15m2 - Paris 14ème,,Appartement Paris 14eme 35m² 1- 4 personnes,,Beau 2 pieces 14eme arrondissement,,Petit studio a louer,,Studio au coeur de paris- montparnasse,,Studio Paris 14e à louer,,Studio 27m² meublé,,Studio 1 pièce 22 m²,,Studio,,Studio 1 pièce 31 m²,,Studio 1 pièce 25 m²,,Appartement 1 pièce 23 m²,,Studette meublé 9m² ALESIA,,Studio 25 m2 à Paris 14,,Appartement 17m proche métro Glacière,,2 Pièces au calme proche Montparnasse,,Studette paris 14eme,,STUDIO 26M2 PARIS 14e ALESIA,,STUDETTE 16m2 RUE D ALESIA 650 EUROS,,Studio meublé et équipé résidence Consul,,Studio 22,5 m2 Métro Pernety,,Appartement 1 pièce 19 m²,,Studio meublé avec 2 balcons Montparnasse Pernety,","" 

: 내가 좋아하는 것

Price1,Price2,Price3... description1,description2,description3.. 

은 가지고 :

Price 1, Description1 
Price 2, Description2 
을 여기 출력입니다

여기 내 코드 :

class LbcSpider(scrapy.Spider): 
name = 'lbc' 

start_urls = ['https://www.leboncoin.fr/locations/offres/ile_de_france/?th=1&location=Paris%2075014&parrot=0&mre=950&sqe=4&ret=2'] 
# j'étais en train de me mettre sur lbc pour scrapper les pages 
def parse(self, response): 
    # extraction des infos de la page 1 

    yield { 
     # extraction du titre 
     # 'title': response.css(
     # 'a.list_item.clearfix.trackable section.item_infos h2.item_title::text').re(r'\s{20,}(.*)'), 
     'title': response.css(
      'a.list_item.clearfix.trackable section.item_infos h2.item_title::text').re(r'\s{20,}(.*)'), 
     # extraction prix 
     'Price': response.css(
      'a.list_item.clearfix.trackable section.item_infos h3.item_price::text').re(r'\s{20,}(.*)'), 
     } 

    # visite des pages suivantes 
    # avec for on extrait de la liste chaque url pour la parser 
    # on ajoute http car pour une raison inconnue elle ne fait pas partie de l'extract? 
    next_page = response.xpath('//a[@id="next"]/@href').extract() 
    if next_page is not None: 
     # modification pour avoir plusieurs url 
     for href in next_page: 
      yield scrapy.Request('http:' + href, callback=self.parse) 
     # next_page = response.urljoin(next_page) 
     #yield scrapy.Request(next_page, callback=self.parse) 

내 질문 51,515,는 다음과 같습니다

  • 왜 가격 값을 먼저 내 코드는 마지막 위치에서 호출을두고 때 온?
  • 각 통화에서 "\ n"을 추가하여 새 회선을 만들려면 어떻게해야합니까?

최저,

+0

인스턴스화) ('클래스 LbcSpider를 사용하는 코드 인 (here 참조)

또한 당신은 당신의 프로젝트 설정에서 FEED_EXPORT_FIELDS를 정의하는 CSV 수출에서 당신의 품목을 수출하는 순서를 정의 할 수 있습니까? ([ask] 및 [mcve] 참조). – boardrider

답변

0

scrapy 추출기는 모든 긁어 항목의 목록을 생성합니다.

def parse(self, response): 
    title = # Scrape the titles 
    Price = # Scrape the prices 
    result = zip(title, Price) 
    for title, Price in result: 
     item = LbcItem() 
     item['title'] = title 
     item['Price'] = Price 
     yield item 

먼저 모든 가격과 제목을 긁어이 방법 :

나는 스크래핑을 분리하는 것이 더 쉬울 수와 같이, 제대로 출력 파일 형식을하기 위해, 항목의 반환 것이라고 생각 zip으로 압축하기 전에 별도의 목록에 저장하고 압축 된 result -variable을 반복합니다.

이렇게하면 각 항목을 지정하고 별도로 산출하므로 원하는 방식으로 결과가 나옵니다. `

관련 문제