BeautifulSoupで取得したHTMLの内容とブラウザで表示されるHTMLの内容は違うことがあるらしい

プログラミング
スポンサーリンク




スポンサーリンク

現象

Googleの検索結果のテキストとURLをBeautifulSoupで取得しようとしたところ、クラス名が存在しないため取得できなかった。

原因

BeautifulSoupとブラウザでHTMLの内容が異なっており、ブラウザでのクラス名を指定しても取得できなかった。

ブラウザでHTMLの補完が行われるので、原文とは違った内容になるらしいです。

↓BeautifulSoupで取得したHTML(以後[補完前のHTML]と呼ぶ)

↓ブラウザで表示されるHTML(以後[補完後のHTML]と呼ぶ)

このとき、class=mRnBbe QgUve nDgy9dを指定しても補完前のクラス名とは異なるため、テキストを取得できない

対処方法

(1) 補完前のソースを元にスクレイピングを行う

コンソール等に出力した補完前のHTMLを見ながらスクレイピングを行います。

(2) seleniumでスクレイピングを行う

seleniumで取得するHTMLは補完後のHTMLなので、そのままスクレイピングを行うことができます。

参考文献

Python 3.x - BeautifulSoupで取得するコードについて(質問)|teratail
はじめまして、最近スクレイピングを学び始めました。BeautifulSoupで取得してくるコードとGoogleの検証で見るコードが違うことがあるのですが、なぜ検証とは違ってしまうのですか?

コメント

タイトルとURLをコピーしました