【发布时间】:2015-07-04 08:41:11
【问题描述】:
我想解析股票列表,因此我尝试格式化start_urls 列表的末尾,这样我就可以添加符号而不是整个网址。
在stock_list 方法中带有start_urls 的Spider 类:
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 时只需在命令行中输入股票代码作为参数???
shell 通常会在 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
【问题讨论】:
标签: python function while-loop web-crawler scrapy