我有一份NPI列表,我想从npidb.org中删除提供商的名称 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 :(得分:0)
假设您有一个来自csv文件的npi列表,那么您可以简单地使用format
更改网站地址,如下所示(我还添加了从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)
答案 1 :(得分:0)
嗯,这取决于你的csv文件的结构,但是如果它在单独的行中包含npis,你可以做类似的事情
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
)