scrapy scrapingbee
1.0.0
ScrapyをScrapingBee APIと統合して、JavaScriptとプロキシローテーションにヘッドレスブラウザーを使用します。 APIキーを取得するには、Scrapingbee.comにアカウントを作成する必要があります。
pip install scrapy-scrapingbee
SCRAPINGBEE_API_KEYとScrapingBeeMiddlewareをプロジェクトsettings.pyに追加します。 ScrapingBeeプランに従ってCONCURRENT_REQUESTS設定することを忘れないでください。
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1クモをScrapingBeeSpiderから継承し、 ScrapingBeeRequestを獲得します。
ScrapingBeespiderは、デフォルトのロガーをオーバーライドして、SCRAPYログのAPIキーを非表示にします。
以下に、httpbin.pyのクモの例を参照してください。
from scrapy_scrapingbee import ScrapingBeeSpider , ScrapingBeeRequest
JS_SNIPPET = 'window.scrollTo(0, document.body.scrollHeight);'
class HttpbinSpider ( ScrapingBeeSpider ):
name = 'httpbin'
start_urls = [
'https://httpbin.org' ,
]
def start_requests ( self ):
for url in self . start_urls :
yield ScrapingBeeRequest ( url , params = {
# 'render_js': False,
# 'block_ads': True,
# 'block_resources': False,
# 'js_snippet': JS_SNIPPET,
# 'premium_proxy': True,
# 'country_code': 'fr',
# 'return_page_source': True,
# 'wait': 3000,
# 'wait_for': '#swagger-ui',
},
headers = {
# 'Accept-Language': 'En-US',
},
cookies = {
# 'name_1': 'value_1',
})
def parse ( self , response ):
...ScrapingBeerequestのパラメーション引数でスクレーピングビーパラメーターを渡すことができます。ヘッダーとクッキーは、通常のスクラピーリクエストのように渡されます。 ScrapingBeerequestは、ScrapingBee APIが期待する形式にすべてのパラメーター、ヘッダー、およびCookieをフォーマットします。
APIキーをsettings.pyに追加します。
例を実行するには、このリポジトリをクローンする必要があります。端末で、 examples/httpbin/httpbinに移動し、次の例を実行します。
scrapy crawl httpbin