win 10 proの下でdockerとscrapy-splashを構成する方法
5146 ワード
docker
1:公式サイトにアクセスしてdockerをダウンロードしてインストールする:https://www.docker.com/(PS:dockerを実行するのはメモリが多い)2:インストール中に再起動する必要があり、その後は国内ミラーソース3.右クリック右下のDocker Desktopアイコン->settings->Deamonを配置し、「Registry mirrors:」にミラーアクセラレータアドレスを入力します.ここでは、アリクラウドを例に挙げます.アカウントを作成してログインする->製品とサービス->コンテナミラーサービス->ミラーアクセラレータ->アクセラレータアドレス:https://xxxxxxxx.mirror.aliyuncs.com アクセラレータアドレスを上記の「Registry mirrors」テキストボックスにコピーし、Applyをクリックし、dockerのロードが完了するのを待つ.dockerは国内のミラーソース4を構成した.cmdコマンドラインで「docker pull scrapinghub/splash」と入力することでsplashミラーを取得できますが、右下のDocker Desktopアイコン->settings->Network->DNS Serverを右クリックし、Fixed:8.8.8.8をチェックしてください.これで、dockerはやっと構成されました
scrapy-splash
コマンドラインインタフェースに入るstep.1:「docker pull scrapinghub/splash」と入力し、ダウンロード完了を待つstep.2:「docker run-p 8050:8050 scrapinghub/splash」と入力し、このインタフェースをバックグラウンドに掛ける
jsダイナミックレンダリングが必要なWebページを登る
ソースではなくレンダリングされたWebページの内容を出力できるかどうかを確認します.PyCharmにscrapy-splashパッケージ(File->settings->Project:pro_name->Project Interpreterを導入するのを忘れないでください.右の「+」をクリックして「scrapy-splash」を検索し、下の「Install Package」をクリックします.)をクリックしてパッケージをインポートした後、scrapy_を使用します.splash.SplashRequest()jsでレンダリングされたWebページコードを取得します.ここでは、私のscrapyプロジェクトを例に挙げます.
spid. py
特に注意!!!
最後の行のパラメータの1つは非常に霊的です
settings. py
Terminal:
結果:成功
PS:どのように科学的にインターネットを利用して、私の前の1篇の文章は書きました~
1:公式サイトにアクセスしてdockerをダウンロードしてインストールする:https://www.docker.com/(PS:dockerを実行するのはメモリが多い)2:インストール中に再起動する必要があり、その後は国内ミラーソース3.右クリック右下のDocker Desktopアイコン->settings->Deamonを配置し、「Registry mirrors:」にミラーアクセラレータアドレスを入力します.ここでは、アリクラウドを例に挙げます.アカウントを作成してログインする->製品とサービス->コンテナミラーサービス->ミラーアクセラレータ->アクセラレータアドレス:https://xxxxxxxx.mirror.aliyuncs.com アクセラレータアドレスを上記の「Registry mirrors」テキストボックスにコピーし、Applyをクリックし、dockerのロードが完了するのを待つ.dockerは国内のミラーソース4を構成した.cmdコマンドラインで「docker pull scrapinghub/splash」と入力することでsplashミラーを取得できますが、右下のDocker Desktopアイコン->settings->Network->DNS Serverを右クリックし、Fixed:8.8.8.8をチェックしてください.これで、dockerはやっと構成されました
scrapy-splash
コマンドラインインタフェースに入るstep.1:「docker pull scrapinghub/splash」と入力し、ダウンロード完了を待つstep.2:「docker run-p 8050:8050 scrapinghub/splash」と入力し、このインタフェースをバックグラウンドに掛ける
jsダイナミックレンダリングが必要なWebページを登る
ソースではなくレンダリングされたWebページの内容を出力できるかどうかを確認します.PyCharmにscrapy-splashパッケージ(File->settings->Project:pro_name->Project Interpreterを導入するのを忘れないでください.右の「+」をクリックして「scrapy-splash」を検索し、下の「Install Package」をクリックします.)をクリックしてパッケージをインポートした後、scrapy_を使用します.splash.SplashRequest()jsでレンダリングされたWebページコードを取得します.ここでは、私のscrapyプロジェクトを例に挙げます.
spid. py
import scrapy
from scrapy_splash import SplashRequest
class SpidSpider(scrapy.Spider):
name = 'spid'
allowed_domains = ['google.com']
start_urls = ['https://www.google.com/']
def start_requests(self):
url ='https://www.google.com/'
yield SplashRequest(url,callback=self.parse,args={'wait': 0.5},dont_filter=True)
特に注意!!!
最後の行のパラメータの1つは非常に霊的です
args={'wait': 0.5}
このパラメータがなければ、ページはレンダリングに間に合わないかもしれませんが、jsでレンダリングされていない初期ページコードを返します.みんな私と同じようにこの穴を踏まないでください...settings. py
SPLASH_URL = 'http://localhost:8050'# splash
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DOWNLOADER_MIDDLEWARES = {
# splash middleware
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
Terminal:
scrapy crawl spid -s JOBDIR=crawls/spid-1
結果:成功
PS:どのように科学的にインターネットを利用して、私の前の1篇の文章は書きました~