これまでのところ、私はajaxを使用してWebサイトを処理するために、スクレイピーとカスタムクラスを作成してきました。
しかし、私が理解していることから、JavaScriptの後にレンダリングされたHTMLをスクレイピングするスクレイピースプラッシュを使用すると、クローラーの速度に大きな影響がありますか?
スクレイピーでバニラのHTMLページをスクレイピングするのにかかる時間と、スクレイピースプラッシュでJavaScriptでレンダリングされたHTMLをスクレイピングするのにかかる時間を比較するとどうなりますか?
そして最後に、scrapy-splashとSeleniumはどのように比較されますか?
これは、ページに存在するJavaScriptの量によって異なります。
すべてのjavascriptをレンダリングするには、スプラッシュにしばらく時間がかかり、pythonアプリケーションは、レンダリングが完了するため、スプラッシュもそれを実行できない場合があります。
wait
を置くことをお勧めします。ここに、
import scrapy
from scrapy_splash import SplashRequest
yield scrapy.Request(url, callback=self.parse, meta={'splash':{'args':{'wait':'25'},'endpoint':'render.html'}})
または
import scrapy
from scrapy_splash import SplashRequest
yield SplashRequest(url, self.parse, endpoint='render.html',
args={'wait': 5, 'html' : 1 } )
Selenium
は、Webブラウザーの対話を自動化するためにのみ使用され、Scrapy
は、HTMLのダウンロード、データの処理、および保存(Webクロールフレームワーク全体)に使用されます。
スクレイピングについて話すと、scrapy
が問題であり、問題がJavaScriptであるかどうかをお勧めします。