質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Pythonのrequests.Sessions().get()で取得する言語を指定する方法【Googleの天気情報】

Cocode
Cocode

総合スコア1687

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0リアクション

0クリップ

175閲覧

投稿2022/09/28 03:13

編集2022/09/28 03:25

知りたいこと

requests.Sessions().get(url)でhtmlを取得する時に、デフォルトの日本語ではなく、英語で取得したいです。

前提条件

現在、海外の動画教材を見ながら勉強しています。

Googleで「weather」と検索するとすごく長いURLがURL欄に表示されます。
例)https://www.google.com/search?q=weather&rlz=1C5CHFA_enJ(省略)&sourceid=chrome&ie=UTF-8

ですが後ろの文字列の羅列は無視して最初の方の部分+地名で、任意の場所の天気を表示させることができます。
例)https://www.google.com/search?q=weather+london(ロンドンの天気を表示)

このことを利用して、任意の場所の天気を表示させるアプリをつくろうという教材です。
全体は長すぎるので簡易版コード(ロンドンの天気だけを表示する)を以下に載せます。

python

import PySimpleGUI as sg from bs4 import BeautifulSoup as bs import requests def get_weather_data_london(): USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" # ↓↓ロンドンの天気の検索結果 url = 'https://www.google.com/search?q=weather+london' # ↓↓検索結果ページのHTMLコードを取得 session = requests.Session() session.headers['User-Agent'] = USER_AGENT html = session.get(url) soup = bs(html.text, 'html.parser') # ↓↓<span id="wob_dc">の中の文字を取得 weather = soup.find('span', attrs={'id': 'wob_dc'}).text return weather print(get_weather_data_london()) # 出力結果:「晴」などの日本語

htmlを取得して、<span>タグでid="wob_dc"の要素のテキストを取得するという処理です。

上記のコードには記載していませんが、このあとの処理として、天気が"sunny"なら●●の処理をする、"snow"なら▲▲の処理をする、とifで分岐させるのですが、私のロケーションが日本なので(?)日本語の天気(「晴」)などを取得してしまい、if文が使い物になりません。

if文の方は変更せず、取得してくるhtmlの言語を英語にしたいです。

調べたこと

  • requests.Session()requests.Session().get(url)あたりで、パラメーターを設定したら英語にできないかと思って調べましたが、見つけられませんでした。
  • 天気情報のURLに例えば_ENなどを付け足し、search?q=weather+london_EN←のように指定する方法があるのではないかと思い調べましたが、見つけられませんでした。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

Cocode

2022/09/28 03:21

で、できました…すごい…ありがとうございます!!!!
Cocode

2022/09/28 03:22

もしよければ回答として投稿していただけませんか。ベストアンサーにさせていただきまして、この質問をcloseさせようと思います。
melian

2022/09/28 03:24

ありがとうございます、回答に転記します。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。