mechanizeを使用してPythonでWebサイトのタイトルを出力する

mechanizeを使用してPythonでWebサイトのタイトルを出力してみます。

mechanizeモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールしておく必要があります。

■Python

Pythonバージョン

今回のPythonのバージョンは、「3.8.2」を使用しています。(Windows10)

■mechanizeを使用してWebサイトのタイトルを出力する

では早速、mechanizeを使用してWebサイトのタイトルを出力するスクリプトを書いていきます。

■コード

import mechanize

url ='https://www.yahoo.co.jp/'
op = mechanize.Browser()
op.open(url)
print(op.title())

インポートで、mechanizeモジュールを呼び出して、urlという変数を作成し、タイトルを出力したいWebサイトのURLを指定します。今回は「Yahoo!Japan」のタイトルを出力してみます。

次に、opという変数を作成し、mechanizeBrowserオブジェクトを収納します。その後、open()で指定したURLをmechanizeBrowserオブジェクトで開きます。

開いた後に、title()でWebサイトのタイトルを出力します。

■実行

今回書いたスクリプトを「website_title.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、今回指定したWebサイトのタイトルが出力されました。

■HTTP Error 403: b’request disallowed by robots.txt’というエラーが発生する場合

今回、指定したWebサイトのタイトルが出力されましたが、Google.comでもタイトルが出力されるのか検証を行いました。

mechanize._response.httperror_seek_wrapper: HTTP Error 403: b’request disallowed by robots.txt’

スクリプトを実行すると、上記のエラーが発生しました。「HTTPエラー403:リクエストはrobots.txtによって許可されていません」という内容でGoogle.com側のrobots.txtの影響でスクレイピングがブロックされる。なお、これはサーバが「HTTP 403エラー」を返したのではなく、robots.txtファイルの解析に基づいてクライアント(Google)から作成された403。

■コード

import mechanize

url ='https://www.google.com/'
op = mechanize.Browser()
op.set_handle_robots(False)
op.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
op.open(url)
print(op.title())

robots.txtによって許可されていない場合は上記を試みるとWebサイトのタイトルを出力できる。set_handle_robots()で、robots.txtをオフ(off)にできます。

■実行

実行してみると、「HTTP Error 403: b’request disallowed by robots.txt’」というエラーは表示されず、Webサイトのタイトルを出力することができました。

コメント

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