今回はpython学習で大変お世話になってるはたやす先生のUdemy講座から内容を引用してます。
皆さんはスクレイピングでエラーが出る原因はなんだと思いますか?
タグの指定が間違えてる?find_allの後にforで回してない?
いやいや、なめんなよ基礎さえ押さえればスクレイピングなんて楽勝楽勝〜
って思ってました、私。 そして見事に詰むw
どう見てもちゃんとタグは指定してる、コードも間違ってない!なのになんで・・
しかもこのNoneを返すサイト、なぜか検証ツールも反応しないんです。
なぜか消えてますが画像ではカーソルはサイト上の"会社情報"を指してます。検証ツール上でもdivの会社情報を指してます。
でもなぜかサイト上のカーソルは何も反応は無し・・
👆の画像のように普通だったらブラウザ上でもカーソルが反応してタグ情報が表示されるのに・・
そして調べること丸一日、もう自分だけじゃ無理と思いはたやす先生に教えてもらいました。
その正体はHTMLの「iframe」タグ。
なんじゃそれと思いググってみると、
「指定したURL(リンク先ページの内容)をsrcで読み込んで表示するHTMLタグ」
らしいです。
なんともややこしい・・
しかし仕組みさえ分かればこっちのもの。検証ツールをもっと詳しく見ると
<iframe id="pageFrame" src="https://○○○○.com/next-page/?getFromUrl=111111" style="width: 100%; height: 8399px;" frameborder="0">
こんなタグが見つかるはず。あとはrequestとbeautifulsoupでこのsrcのURLにアクセスして通常通りfindかselectをしましょう。
(ここのsrcのURLにアクセスすればちゃんとカーソルが反応する全く同じサイトに飛びます)
んーHTML中々奥深い。
ここで紹介した以外にももっとトリッキーなタグがあるんだろうなぁ・・
まぁその時はちゃんと調べて解決していきましょ。