csv
ファイルにある住所と郵便番号から通りの名前とその通りのシリアル番号を抽出する単純な Web スクレイパーを作成しました。通りの名前、シリアル番号、郵便番号を新しいファイルに保存したいのですが、メソッドにcsv
郵便番号を渡す方法がわかりません。parse()
cmd
scrapy crawl Geospider -o Scraped_data.csv -t csv
これは私のスパイダーです (私がスクレイピングしているページにはログインとパスワードが必要なため、コードは実際には機能しません。私のものは提供しませんが、http://download.kortforsyningen.dkで誰でもユーザーとしてサインアップできます) //content/opret-mig-som-bruger、それは私の問題の一部ではありません):
from scrapy.spider import BaseSpider
from scrapy.selector import XmlXPathSelector
from scrapy.item import Item, Field
import csv
class Road(Item):
RoadNum = Field()
RoadName = Field()
PostNum = Field()
class Geospider(BaseSpider):
name = 'Geospider'
allowed_domains = ["http://kortforsyningen.kms.dk/"]
def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
for row in csv_reader:
yield [unicode(cell, 'utf-8') for cell in row]
filename = 'AddressesAndZipcodes.csv'
reader = unicode_csv_reader(open(filename))
start_urls = []
ZipCode = []
for row in reader:
Address = row[0]
Zip = row[1]
start_urls.append('http://kortforsyningen.kms.dk/service?ServiceName=geoV&soegemetode=0&vejnavn=%s&kommunepost=%s&format=XML&max_hits=10&login=xxx&password=xxx' % (Address, ZipCode))
ZipCode.append(Zip)
def parse(self, response):
xxs = XmlXPathSelector(response)
sites = xxs.select('//dokument/forekomst')
items = Road()
items['RoadNum'] = sites.select("vejkode/text()").extract()
items['RoadName'] = sites.select("vejnavn/text()").extract()
items['PostNum'] = ZipCode
yield items, ZipCode
Parse()
郵便番号が他の結果と一緒に保存されるように、郵便番号を渡す方法について何か考えはありますか?
ありがとう