我想解析一個股票列表,所以我想格式化我的start_urls
列表的末尾,所以我可以只添加符號而不是整個url。Python:Scrapy start_urls列表能夠處理.format()?
與start_urls
蜘蛛類內部stock_list
方法:
class MySpider(BaseSpider):
symbols = ["SCMP"]
name = "dozen"
allowed_domains = ["yahoo.com"]
def stock_list(stock):
start_urls = []
for symb in symbols:
start_urls.append("http://finance.yahoo.com/q/is?s={}&annual".format(symb))
return start_urls
def parse(self, response):
hxs = HtmlXPathSelector(response)
revenue = hxs.select('//td[@align="right"]')
items = []
for rev in revenue:
item = DozenItem()
item["Revenue"] = rev.xpath("./strong/text()").extract()
items.append(item)
return items[0:3]
這一切都運行正常,如果我擺脫stock_list
的,只是做簡單的start_urls
正常,但由於它目前是不出口比空多文件。
另外,我應該嘗試一個sys.arv
的設置,以便在運行$ scrapy crawl dozen -o items.csv
時只需在命令行輸入股票符號作爲參數?
通常情況下,殼打印出LOG/DEBUG打印輸出中2015-04-25 14:50:57-0400 [dozen] DEBUG: Crawled (200) <GET http://finance.yahoo.com/q/is?s=SCMP+Income+Statement&annual>
,但目前不包括它,這意味着它是不正確格式化start_urls
這是完美的,完全合理,但導出一個空的csv。我認爲'.format()'不起作用,並且'{}'只是作爲url被包含在內......「 –
@CharlesWatson謝謝,很高興它有幫助。你有沒有定義你的解析方法,並告訴它提取任何東西?我沒有看到你提到過有關上面的實際情況。 – benjamin
我已將我的解析方法添加到帖子中。 –