【发布时间】:2013-07-19 02:14:37
【问题描述】:
我听从了这两个帖子的建议,因为我也在尝试创建一个通用的scrapy spider:
How to pass a user defined argument in scrapy spider
Creating a generic scrapy spider
但是我得到一个错误,我应该作为参数传递的变量没有定义。我的 init 方法中是否缺少某些内容?
代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from data.items import DataItem
class companySpider(BaseSpider):
name = "woz"
def __init__(self, domains=""):
'''
domains is a string
'''
self.domains = domains
deny_domains = [""]
start_urls = [domains]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('/html')
items = []
for site in sites:
item = DataItem()
item['text'] = site.select('text()').extract()
items.append(item)
return items
这是我的命令行:
scrapy crawl woz -a domains="http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
这是错误:
NameError: name 'domains' is not defined
【问题讨论】:
-
我忘记将 start_urls 中的变量引用为 self.domains,但现在错误提示 self 未定义。我对自己的问题有一个答案,但必须等待 4 小时才能发布。待续……
标签: arguments scrapy web-crawler