2017-03-02 2 views
2

にcsvファイルから余分なデータを渡す:Scrapyマイscrapyスパイダーは、CSVファイルを介して検索し、そのようなcsvファイル内のアドレスでstart_urlsを実行し、解析

from csv import DictReader 
    with open('addresses.csv') as rows: 
    start_urls=['http://www.example.com/search/?where='+row["Address"].replace(',','').replace(' ','+') for row in DictReader(rows)] 

しかし、.csvファイルには、また、電子メールやその他が含まれています情報。この追加の情報を新しいファイルに追加するにはどうすればよいですか?

import scrapy 
from csv import DictReader 

with open('addresses.csv') as rows: 
    names=[row["Name"].replace(',','') for row in DictReader(rows)] 
    emails=[row["Email"].replace(',','') for row in DictReader(rows)] 
    start_urls=['http://www.example.com/search/?where='+row["Address"].replace(',','').replace(' ','+') for row in DictReader(rows)] 

def parse(self,response): 
    yield{ 
    'name': FROM CSV, 
    'email': FROM CSV, 
    'address' FROM SCRAPING: 
    'city' FROM SCRAPING: 
    } 
+0

詳細については、私の答えの最新の編集を参照してください。 – Umair

答えて

3
import scrapy 
from csv import DictReader 

class MySpider(scrapy.Spider): 

    def start_requests(self): 

     with open('addresses.csv') as rows: 

      for row in DictReader(rows): 

       name=row["Name"].replace(',','') 
       email=row["Email"].replace(',','') 

       link = 'http://www.example.com/search/?where='+row["Address"].replace(',','').replace(' ','+') 

       yield Request(url = link, callback = self.parse, method = "GET", meta={'name':name, 'email':email}) 


    def parse(self,response): 
     yield{ 
     'name': resposne.meta['name'], 
     'email': respose.meta['email'], 
     'address' FROM SCRAPING: 
     'city' FROM SCRAPING: 
     } 
  • あなたのCSVファイルを開きます。
  • start_requestsの方法でそれを反復する。
  • パラメータをコールバック関数に渡し、meta変数を使用すると、metaにPythonディクショナリを渡すことができます。

注:start_requestsは、カスタム定義された方法で、そのPythonのScrapyの方法ではないことに注意してください。 https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests

関連する問題