【发布时间】:2019-11-20 16:30:12
【问题描述】:
我有以下部分工作的代码,
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(),但这似乎不起作用。我的代码有什么问题?
谢谢,
【问题讨论】:
标签: python scrapy web-crawler scrapy-splash splash-js-render