2017-01-18 28 views
0

私は、npidb.orgからのプロバイダの名前を掻き集めるNPIのリストを持っています。 NPI値はcsvファイルに保存されています。詐欺を使用した値リストからウェブサイトをクロールする

コードにURLを貼り付けることで手動で行うことができます。しかし、NPIのリストがあれば、どのようにそれを行うのか分かりません。ここで

は私の現在のコードです:

import scrapy 
from scrapy.spider import BaseSpider 



class MySpider(BaseSpider): 
    name = "npidb" 

    def start_requests(self): 
     urls = [ 

      'https://npidb.org/npi-lookup/?npi=1366425381', 
      'https://npidb.org/npi-lookup/?npi=1902873227', 
     ] 
     for url in urls: 
      yield scrapy.Request(url=url, callback=self.parse) 

    def parse(self, response): 
     page = response.url.split("/")[-1] 
     filename = 'npidb-%s.html' % page 
     with open(filename, 'wb') as f: 
      f.write(response.body) 
     self.log('Saved file %s' % filename) 
+0

コマンドラインからすべてのnpi値を提供したいですか?テキストファイル? – eLRuLL

+0

NPIは、別のコードから派生したcsvファイルに格納されています。 –

+0

csvファイルの構造は何ですか?各URLが1行に1つのエントリとして登録されていれば、open(file_name).read()。split()のように書いて、すべての行のリストを取得することができます。 –

答えて

0

は、あなたは、単に(私もリストを取得するためにパーツを追加し、次のようウェブサイトのアドレスを変更するformatを使用することができ、CSVファイルからNPIのリストを持っていると仮定します)csvファイルからあなたはすでにそれを持っている場合は、その一部を省略することができます。

def start_requests(self): 
     # get npis from csv file 
     npis = [] 
     with open('test.csv', 'r') as f: 
      for line in f.readlines(): 
       l = line.strip() 
       npis.append((l)) 
     # generate the list of address depending on npi 
     start_urls = [] 
     for npi in npis: 
      start_urls.append('https://npidb.org/npi-lookup/?npi={}'.format(npi)) 
     for url in start_urls: 
      yield scrapy.Request(url=url, callback=self.parse) 
0

まあ、それはあなたのcsvファイルの構造に依存するが、それは別のラインでnpisが含まれている場合、あなたが何かを行うことができますlike

def start_requests(self): 
    with open('npis.csv') as f: 
     for line in f: 
      yield scrapy.Request(
       url='https://npidb.org/npi-lookup/?npi={}'.format(line.strip()), 
       callback=self.parse 
      ) 
関連する問題