docker-compoesでpython(scrapy / splash)のスクレイピング環境構築

スクレイピングをするために、scrapy + splash を利用した際、環境設定はdocker-composeで行いました。
その際に発生したエラーメモです。

 

事象2が解決できず、いったんペンディング中。。。スクレイピング部分はselemiumに戻す方向で検討中。

だれかコメントいただけると幸いです。

 

ソースは以下に格納しています。

docker-scrapy

 

事象:1 DNS lookup failed: no results for hostname lookup: splash

 

twisted.internet.error.DNSLookupError: DNS lookup failed: no results for hostname lookup: splash.

 

 

原因:

setting.pyのSPLASH_URL = ‘http://localhost:8050’が設定されていなかった。

詳細には、setting.pyを修正した後に、docker-compose up  -dで実行したためリビルドされず、

setting.pyが入れ替わっていなかった。

そのため、docker-compose up -d –buildで実行しなおしたらエラーが解消した。

 

 

事象:2  Connection was refused by other side: 111: Connection refused.

File "/usr/local/lib/python3.6/site-packages/scrapy/core/downloader/middleware.py", line 43, in process_request
    defer.returnValue((yield download_func(request=request,spider=spider)))
twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.

 

調査1:splashが起動しているか確認

 

setting.pyで指定したSPLASH_URL = ‘http://localhost:8050’にブラウザからアクセス

以下の画面が立ち上がることを確認。

 

 

 

ちなみに、検索したいURLを張り付けて、検索を実行してみて動くことを確認

 

 

 

 

調査2:コマンドプロンプトからcurlを実行して確認

 

 

以下の本家サイトからZIPを取得して、「C:\Program Files」へコピペ。(%PATH%に通っていればどこでもOK)

https://curl.haxx.se/download.html

 

 

実行結果で、HTMLの内容が表示されれば問題なし。

C:\Users\kenta>curl http://localhost:8050/render.html?url=http://www.google.com/"
<!DOCTYPE html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja">
<head><meta content=">name="description">
<meta content="noodp" name="robots">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title><script nonce="sUq6fqwxKAppxMt5MeRF9w==">
~省略~

 

原因:調査を一時中断してます。。。

 

 

タグ: , ,

About: ken


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください