クローラーでrequestsでHTMLデータを取得しているんだけど、取得したデータは旧サイトでそこからリダイレクトしているから取得ができていなかった。どうしたらいい

リダイレクトにより取得ができない場合、以下の手順を試してみることができます。

  1. リダイレクトを処理する: requestsライブラリを使用している場合、デフォルトでは自動的にリダイレクトを処理しますが、場合によっては手動で処理する必要があります。requestsのallow_redirectsパラメータをFalseに設定してリダイレクトを無効にし、その後、リダイレクト先のURLに対して別のリクエストを送信します。

    python
    import requests response = requests.get('https://example.com', allow_redirects=False) if response.status_code == 302: # リダイレクトのステータスコード redirect_url = response.headers['Location'] # リダイレクト先のURLに対して別のリクエストを送信する redirected_response = requests.get(redirect_url) # ここで取得したデータを処理する
  2. User-Agentの設定: サイトがリダイレクトを使用している場合、User-Agentが原因でリダイレクトが発生することがあります。User-Agentヘッダーを変更して、サイトによるリダイレクトの挙動を変えてみることができます。

    python
    headers = {'User-Agent': 'Your User Agent String'} response = requests.get('https://example.com', headers=headers)
  3. セッションを使用する: requestsのセッションを使用してリダイレクトを処理する場合、Cookieやセッション情報が保持されます。これにより、リダイレクト先でも同じセッション情報を使用してデータを取得できます。

    python
    import requests with requests.Session() as session: response = session.get('https://example.com') # ここで取得したデータを処理する

これらの手順を試してみて、リダイレクトにより取得ができるようになるかどうか確認してください。

未分類

Posted by ぼっち