2015-04-29 65 views
1

我正在使用scrapy進行一些網絡掃描,並且遇到了問題。我已經想通了,我可以使用下面的命令行救我scrapy結果到CSV文件:無法讀取文件,然後用scrapy將結果寫入文件(python)

scrapy crawl spider --set FEED_URI=output.csv --set FEED_FORMAT=csv 

我也知道,我可以通過使用一個起始URL讀取文本文件刮以下命令行輸入:

scrapy crawl dmoz -a filename=text.txt 

而我在我的蜘蛛的代碼是:當我試圖同時做這兩

class DmozSpider(BaseSpider): 
name = "dmoz" 
allowed_domains = ["ebay.com"] 

def __init__(self, filename=None): 
    if filename: 
     with open(filename, 'r') as f: 
      self.start_urls = f.readlines() 
      print self.start_urls 

我的問題就出現了。我想讓我的蜘蛛抓取文本文件中指定的URL,然後將輸出寫入一個csv文件。下面的命令行不會出於某種原因,該URL被讀入(我知道的一個事實),但csv文件不被寫入:

scrapy crawl dmoz -a filename=text.txt --set FEED_URI=output.csv --set FEED_FORMAT=csv 

如果有人看到我在做什麼錯誤或有一個解決方法,它將不勝感激。謝謝!

回答

0

如果您有動態啓動請求,則應使用start_requests()來產生它們,而不是更改start_urls
這是你應該怎麼做:

class DmozSpider(BaseSpider): 
name = "dmoz" 
allowed_domains = ["ebay.com"] 

def start_requests(self): 
    if self.filename: 
     with open(self.filename, 'r') as f: 
      for url in f.readlines(): 
       yield scrapy.Request(url) 

將輸出寫入到csv文件,你只需要使用-o參數(如果你使用一個有效的擴展,飼料格式將定義文件自動選擇):

scrapy crawl dmoz -a filename=text.txt -o output.csv 
相關問題