我有以下的代码,部分工作,Scrapy CrawlSpider + Splash:如何通过linkextractor关注链接?
class ThreadSpider(CrawlSpider):
name = 'thread'
allowed_domains = ['bbs.example.com']
start_urls = ['http://bbs.example.com/diy']
rules = (
Rule(LinkExtractor(
allow=(),
restrict_xpaths=("//a[contains(text(), 'Next Page')]")
),
callback='parse_item',
process_request='start_requests',
follow=True),
)
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, self.parse_item, args={'wait': 0.5})
def parse_item(self, response):
# item parser
代码将只能运行于start_urls
但不会遵循restricted_xpaths
指定的链接,如果是我的规则注释掉start_requests()
方法和线process_request='start_requests',
,它会运行并遵循预期的链接,当然没有js渲染。
我已经阅读了两个相关问题,CrawlSpider with Splash getting stuck after first URL和CrawlSpider with Splash,特别在start_requests()
方法改变scrapy.Request()
到SplashRequest()
,但似乎并没有工作。我的代码有什么问题? 谢谢,
这似乎没有帮助。记住'restrict_xpaths =(“// a [contains(text(),'Next Page')]”)'行''''如果我注释掉'start_requests()'就行。任何方式我意识到这是一个未解决的问题,许多用户在这里报告:https://github.com/scrapy-plugins/scrapy-splash/issues/92 –