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

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

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

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

Q&A

解決済

1回答

6004閲覧

pythonでURL先の情報を読み取りたい

ssh_u

総合スコア34

Python 3.x

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

0グッド

0クリップ

投稿2018/06/28 11:50

前提・実現したいこと

pythonでURL先の情報をjson形式で読み込みたい

発生している問題・エラーメッセージ

urllib.error.HTTPError: HTTP Error 400: Bad Request エラー箇所はコメントアウトで指示してます

該当のソースコード

python3

1# -*- coding: utf-8 -*- 2import json 3import urllib.request 4import urllib.parse 5 6API_KEY = 'APIKEY' 7CUSTOM_SEARCH_ENGINE_ID = 'ID' 8SEARCH_WORDS = 'dog' # 検索ワード 9 10NUM = 10 11 12url = 'https://www.googleapis.com/customsearch/v1?key={API_KEY}&cx={CUSTOM_SEARCH_ENGINE_ID}&q={SEARCH_WORD}' 13 14f = open('googleresult.json', 'w') 15 16for i in range(0, NUM): 17 18 req = urllib.request.Request(url) 19 20 response = urllib.request.urlopen(req) 21 #↑ここで上のエラーが出ます 22 content = json.loads(response.read().decode('utf8')) 23 24 f.write(json.dump(content)) 25 26f.close() 27

試したこと

エラーを解決したです

補足情報(FW/ツールのバージョンなど)

説明不足かもしれませんがよろしくお願いします

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

fプレフィックスをお忘れでは。

Python

url = 'https://www.googleapis.com/customsearch/v1?key={API_KEY}&cx={CUSTOM_SEARCH_ENGINE_ID}&q={SEARCH_WORD}'

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Python

1url = f'https://www.googleapis.com/customsearch/v1?key={API_KEY}&cx={CUSTOM_SEARCH_ENGINE_ID}&q={SEARCH_WORD}'

投稿2018/06/28 11:53

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssh_u

2018/06/28 12:00

コメントありがとうございます NameError: name 'SEARCH_WORD' is not defined 新しいエラーが出てきました
LouiS0616

2018/06/28 12:03

エラーメッセージに書いてあるとおりです。 本当に『SEARCH_WORD』を宣言しているか、良く見てみてください。
ssh_u

2018/06/28 12:04

すみません自分のミスでした f.write(json.dump(content)) TypeError: dump() missing 1 required positional argument: 'fp' 治したらまた新しいエラーが出ました 何度もすみません
LouiS0616

2018/06/28 12:05

json.dump ⇒ json.dumps
ssh_u

2018/06/28 12:11 編集

ありがとうございます! できました すみません質問がひとつあります SEARCH_WORD = 'dog' のとこが検索ワードなんですが、ここを「犬」とすると文字化けして、検索できません。 どうしたらよいでしょうか?
ssh_u

2018/06/28 12:31

気づいていられるか確認のコメントです。 しつこくてすみません
LouiS0616

2018/06/28 12:36

少々お待ちください。
umyu

2018/06/28 12:41

>shunmameさんへ urllib.request.urlopenは日本語クエリに対応するのが面倒なので、requests パッケージを使用することをお勧めします。 https://teratail.com/questions/110327
LouiS0616

2018/06/28 12:48 編集

@umyu さん 情報提供ありがとうございます。 --- @shunmame さん いちおうこんな感じでゴリゴリ検索することは可能です。 --- def encode_search_word(word): __return ''.join( ____map(lambda v: '%{:X}'.format(v), word.encode('utf-8')) __) SEARCH_WORD = encode_search_word('いぬ') 註:空白をアンダースコアで代替しています。 --- しかし最初から対応しているパッケージを使うに越したことはないので、umyuさんの紹介されているrequestsパッケージの利用を私も推奨します。
ssh_u

2018/06/28 12:50

お二方詳しく説明していただきありがとうございます 今後もpythonライフを頑張ていきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問