我正在尝试用一些javascript元素抓取一个页面,我已经做了这个,它有一部分可以通过302(我测试过它并且工作正常):
class bllanguage(scrapy.Spider):
handle_httpstatus_list = [302]
name = "bllanguage"
allowed_domains = ["http://explore.com/"]
start_urls = [
'http://explore.com/this-other-url'
]
def __init__(self):
driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs')
def start_requests(self):
for u in self.start_urls:
r = scrapy.Request(url = u, dont_filter=True, callback=self.parse)
r.meta['dont_redirect'] = True
yield r
def parse(self, response):
driver.get(response.url)
print response.url
它给了我这个错误:
追踪(最近一次通话): 文件“/usr/lib/python2.7/dist-packages/twisted/internet/defer.py”,行 577,在_runCallbacks中 current.result = callback(current.result,* args,** kw) 文件“/usr/lib/pymodules/python2.7/scrapy/spiders/init.py”,第76行,解析 引发NotImplementedError NotImplementedError
我无法理解我犯的错误,如果有人能给我一个提示,那就太棒了。
编辑: 正如@paul trmbrth所说,我必须在“def start_requests”的缩进中加入“def parse”。但现在我有了这个:
第30行,在解析中 driver.get(response.url) NameError:未定义全局名称'driver'
但是我在def _ init _ 中定义了它:为什么?