SSL 証明書エラー
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]
社内システムや開発環境など、自己署名証明書を使っているサイトへの接続時に発生。
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
response = requests.get(url, verify=False, timeout=10) # 本番では使わない
⚠️ verify=False は社内環境・開発専用
公開サイトで verify=False を使うと中間者攻撃のリスクが生じる。本番環境では CA 証明書バンドルを正しく設定すること。
文字化け
label や placeholder に文字化けが含まれる。特に Shift_JIS や EUC-JP を使う古いサイトで頻発。
# 方法 1: response.content(bytes)を BS に直接渡す
soup = BeautifulSoup(response.content, "lxml")
# 方法 2: apparent_encoding を使う(chardet が必要)
pip install chardet
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "lxml")
# 方法 3: 明示的にエンコーディング指定
soup = BeautifulSoup(response.content.decode("shift_jis", errors="replace"), "lxml")
INPUT が 0 件(JS 未描画)
extract_static() で INPUT が 0 件返ってくる。ブラウザで開くと INPUT は表示されている。
原因:JavaScript でフォームが動的に生成されているため、requests が取得した HTML には INPUT タグが存在しない。
対処:extract_dynamic()(Playwright)に切り替える。
from extractor import extract_inputs
# まず静的で試す
entities = extract_inputs(url)
if len(entities) == 0:
print("静的で 0 件 → Playwright に切り替え")
entities = extract_inputs(url, dynamic=True)
タイムアウト
requests.exceptions.Timeout / playwright._impl._errors.TimeoutError
# requests: timeout 秒数を増やす
entities = extract_static(url, timeout=30)
# Playwright: ミリ秒で指定、networkidle でなく load に変える
entities = extract_dynamic(url, wait_until="load", timeout=60000)
Playwright 起動エラー(Linux 依存不足)
Error: Failed to launch chromium because executable doesn't exist または libnss3.so: cannot open shared object file
Linux サーバーや Docker 環境で頻発。
# 依存ライブラリを一括インストール(sudo 権限が必要)
sudo playwright install-deps chromium
# それでも起動しない場合はブラウザ自体を再インストール
playwright install chromium
403 / アクセス拒否
requests.exceptions.HTTPError: 403 Client Error
Bot 対策として User-Agent を確認し、Python/requests を弾いているサイトで発生。
headers = {
"User-Agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/124.0.0.0 Safari/537.36"
)
}
response = requests.get(url, headers=headers, timeout=10)
⚠️ 利用規約の確認を忘れずに
スクレイピングを禁止しているサイトへの実行はサービス利用規約違反になる場合がある。必ず対象サイトの robots.txt と利用規約を確認してから実行すること。