知りたいこと
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
1import PySimpleGUI as sg 2from bs4 import BeautifulSoup as bs 3import requests 4 5def get_weather_data_london(): 6 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" 7 8 # ↓↓ロンドンの天気の検索結果 9 url = 'https://www.google.com/search?q=weather+london' 10 11 # ↓↓検索結果ページのHTMLコードを取得 12 session = requests.Session() 13 session.headers['User-Agent'] = USER_AGENT 14 html = session.get(url) 15 soup = bs(html.text, 'html.parser') 16 17 # ↓↓<span id="wob_dc">の中の文字を取得 18 weather = soup.find('span', attrs={'id': 'wob_dc'}).text 19 return weather 20 21print(get_weather_data_london()) 22# 出力結果:「晴」などの日本語
htmlを取得して、<span>
タグでid="wob_dc"
の要素のテキストを取得するという処理です。
上記のコードには記載していませんが、このあとの処理として、天気が"sunny"なら●●の処理をする、"snow"なら▲▲の処理をする、とifで分岐させるのですが、私のロケーションが日本なので(?)日本語の天気(「晴」)などを取得してしまい、if文が使い物になりません。
if文の方は変更せず、取得してくるhtmlの言語を英語にしたいです。
調べたこと
requests.Session()
かrequests.Session().get(url)
あたりで、パラメーターを設定したら英語にできないかと思って調べましたが、見つけられませんでした。- 天気情報のURLに例えば
_EN
などを付け足し、search?q=weather+london_EN
←のように指定する方法があるのではないかと思い調べましたが、見つけられませんでした。
回答1件
あなたの回答
tips
プレビュー