PythonでPDFファイルのリンクを検出する方法
Webアプリケーションやデータ収集の過程で、リンク先のファイルがPDFかどうかを事前に知る必要がある場合があります。ここでは、Pythonのrequests
ライブラリを使用して、URLがPDFファイルを指しているかどうかを効率的に確認する方法について解説します。
必要なライブラリ
このスクリプトではrequests
ライブラリを使用します。まだインストールされていない場合は、以下のコマンドでインストールできます。
pip install requests
スクリプトの解説
まず、チェックしたいPDFファイルのURLリストを生成します。以下のコードでは、特定の形式に基づいてURLを生成しています。
urls = [f'https://xxx.com/pdf/202404{x:04}01.pdf' for x in range(1000, 10000)]
次に、各URLに対してHTTP HEADリクエストを送信し、レスポンスヘッダーからContent-Type
を確認します。Content-Type
がapplication/pdf
を含む場合、そのURLはPDFファイルであると判断します。
import requests
for url in urls:
try:
response = requests.head(url, allow_redirects=True)
content_type = response.headers.get('Content-Type', '')
if 'application/pdf' in content_type:
print(f'PDFファイルが見つかりました: {url}')
else:
print('NG', url) # PDFファイルでない
except Exception as e:
print(f'エラーが発生しました: {e}')
注意点
-
requests.head()
メソッドは、GETリクエストと同様にサーバーにリクエストを送るものの、ボディはダウンロードせずにヘッダー情報のみを取得します。これにより、リソースの消費を抑えることができます。 -
allow_redirects=True
はリダイレクトを追跡するためのものです。一部のサーバーでは、リクエストがリダイレクトされる場合があり、その追跡を許可することで正確な情報を得られます。
まとめ
このスクリプトは、URLがPDFファイルかどうかを迅速に確認する簡単な方法を提供します。データ収集や自動化スクリプトで役立てることが期待されます。