質問: len(link_elem01) ``` soupまでは取得できているようですが、`link_elem01`と`link_elem02`はprintすると空になっています。 htmlに詳しくなく、またsoupの中の内容が複雑だったので、実行できない理由を教えていただけると嬉しいです。 よろしくお願いします。
回答: google側がスレイピングさせないようにdivタグやclass属性を書き換えているみたいです。以下その調査と報告です。 まず同じurlにブラウザからアクセスして、デベロッパーツールから検索して`'.r > a'`の要素があることを確認しました。 次に質問者さんと同じコードを実行し`resp.text`を見てみると、ブラウザから見れた``タグが見つかりません。 おそらくスクレイピングの対策しているのだろうと考えました。を見てみると、リクエストしたurlはクローリングが禁止されています。 > > User-agent: * > > Disallow: /search > > > 質問者さんのチュートリアルの記事は1年以上前なのでその間にgoogle側がスクレイピング対策したのでしょう。ブラウザからのアクセスでは、ブラウザがresponseを得た後、javascriptの実行によってその内容を書き換えているのではないかと思われます。もしその内容が知りたいのであれば、ブラウザ自動化ができるseleniumを使うことで可能です。しかし、クローリング目的で同じurlにアクセスすると、それは違法行為になります。注意しましょう。