私は部分的に取り組んでいる次のコードを持って、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
のために実行されますが、私はルールでstart_requests()
方法とラインprocess_request='start_requests',
をコメントアウトした場合、restricted_xpaths
に指定されたリンクをたどるません。それはもちろん、jsレンダリングなしで、意図したところでリンクを実行して追跡します。
私は2つの関連する質問、start_requests()
方法でSplashRequest()
にscrapy.Request()
を変えCrawlSpider with Splash getting stuck after first URLとCrawlSpider with Splash、具体的に読んでいるが、それは動作するようには思えません。私のコードで何が間違っていますか? おかげで、
これは役に立たないようです。もし 'start_requests()'をコメントアウトすると 'restrict_xpaths =(" // a [contains(text()、 'Next Page')] ")'という行がうまく動作することを覚えておいてください。どのように私はこれは多くのユーザーがここに報告された未解決の問題であることを認識しています:https://github.com/scrapy-plugins/scrapy-splash/issues/92 –