PythonでWebスクレイピングをする際、一般的に使用されるrequestsで、動的なWebページにリクエストすると実際に表示されるHTMLとは異なるHTMLがレスポンスとして返ってきます。これは、Webページがレスポンシブデザインでユーザーエージェントが設定されていないことが原因の場合があります。
本記事ではfake-useragentでユーザーエージェント情報を偽装してrequestsでHTMLレスポンスを取得する方法をご紹介します。
ユーザーエージェント (User Agent) とは
Webサイトにアクセスする際に、自身のOS・ブラウザ等の情報を発信しています。この情報の事をユーザーエージェント (User Agent) といいます。
ユーザーエージェントを伝えることで「スマートフォン」「パソコン」などを区別してサイトのデザインの切り替えなどが行われています。
fake-useragentのインストール方法
pip install fake-useragent
fake-useragentの使い方
UserAgent テキストの取得
下記のようにヘッダ情報を取得することが可能です。
>>> from fake_useragent import UserAgent >>> ua = UserAgent() >>> ua.ie 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; chromeframe/11.0.696.57)' >>> ua.opera 'Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00' >>> ua.chrome 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/4E423F'
HTMLリクエスト
取得したUserAgent情報を下記のように「requests.get」の引数に設定します。
from fake_useragent import UserAgent ua = UserAgent() header = {'User-Agent': str(ua.chrome)} from fake_useragent import UserAgent res = requests.get(url, headers=header)
コメント