代码中 parse_detail
函数使用了 response.request.meta['driver']
来获取 Selenium 的 webdriver 对象,但是在 parse
函数中并没有传递该对象,因此在执行 yield SeleniumRequest()
的时候可能出现了问题。
你可以尝试修改代码,在 yield SeleniumRequest()
中增加一个参数来传递 webdriver 对象。例如:
# 在 parse() 函数中的 yield SeleniumRequest() 中增加一个 meta 参数
yield SeleniumRequest(
url=full_url,
callback=self.parse_detail,
wait_time=10,
wait_sleep=2,
meta={'driver': driver}
)
这样,在执行 parse_detail
函数时就可以通过 response.meta['driver']
获取到 webdriver 对象了。
另外,如果依然无法运行,可以检查一下是否设置了正确的 xpath 表达式来提取需要的数据,并且确保请求的页面能够正常打开(比如是否需要登录等)。