2017-12-22 13 views
2

ここから画像を取得しようとしています。requests.get()より多くのタグを取得する方法

https://www.google.co.kr/search?q=dog&rlz=1C1MSIM_koKR747KR747&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjSn7Hm053YAhWLmpQKHXRpAh4Q_AUICigB&biw=1440&bih=794

あなたはChromeデベロッパーツールを使用して、「IMG」タグがたくさんあることを確認することができます。しかし、私が下のコードを実行すると、番号21を見るのが残念です。どうすればそれを増やすことができますか?

r=requests.get(url) 
soup=bsp(r.text,'lxml') 
len(soup.find_all('img')) 

答えて

2

Googleが提供する静的ページには、実際には画像検索結果が含まれていないという問題があります。取得した結果に含まれる画像を取得する場合は、Googleロゴと検索構造を提案するために使用するタグなどの構造画像が表示されます。

実際の画像はJavaScriptコードで遅延ロードされていますが、リクエストを使用して取得するのは非常に簡単です。ブラウザのツールを使用して、ページのクライアントコードが行っているリクエストを確認し、それらを代わりに模倣する。これは可能かもしれませんが、ページ上のJavascriptからリバースエンジニアリングするのは非常に難しい、遅延トークンにGoogleがいくつかのトークンを挿入して事前計算を行うのは簡単だろうからです。また、Googleのイメージ検索の利用規約に違反している可能性が最も高い。

リクエストではなくウェブ検索を行うには、Seleniumに切り替えてみてください。実際のブラウザを使用するので、Javascriptを実行して実際の遅延リクエストを行います。それはうまくいくだろう - しかし、あなたはまだサイトの使用条件を侵害しているだろうし、あなたの結果にキャプチャを開始する前にそれほど長いかもしれない。

このようなことを行う正しい方法は、サービスプロバイダ(この場合Googleイメージ検索)に検索を実行するために使用できる公開APIがあるかどうかを確認することです。これを検索すると、Google Image Search APIは非推奨のものであることがわかります.Google Search APIを使用して画像を探すことができるようになりました。現在、1日あたり100件の無料検索が可能で、その後は有料となります。ここで

がAPIを理解し、そしておそらく署名アップ

https://developers.google.com/custom-search/json-api/v1/overview?csw=1

をあなたが理解し、APIキーを取得して行われた後のために彼らのリンクで、あなたを惜しまできるAPIのためのPythonラッパーがありますそうな頭痛の多くは、あなたの画像のURL提供:

https://pypi.python.org/pypi/Google-Search-API

+1

を長い答えをありがとうございました!!!!それは非常に有用です。しかし、答えにかかわらず、私は1回の検索で写真を検索するのではなく、複数回virous検索キーワードを適用することで問題を解決しました。とにかく、私のコードは1回の検索で20枚の写真を得ることができます。 – Muzzi

関連する問題