前提・実現したいこと
jsonにアクセスし住宅ローン金利の情報をスクレイピングしエラーメッセージを改善したいです。
このWebページのcontent-typeヘッダーがjson形式なのでjsonを今回使用しています。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "N.py", line 35, in <module> print(r.json()['header']) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/models.py", line 898, in json return complexjson.loads(self.text, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 357, in loads return _default_decoder.decode(s) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) uematsuyuukinoMacBook-Pro:desktop uematsuyuuki$
該当のソースコード
python3
1import requests 2 3url = 'https://www.barclays.co.uk/dss/service/co.uk/mortgages/' + \ 4 'costcalculator/productservice' 5 6session = requests.Session() 7 8session.headers.update({ 9 #there have not formal headers so it is inclued in it 10 'currentState':'default_current_state', 11 'action':'default', 12 'Origin':'https://www.barclays.co.uk', 13 #set referer,user-agent,X-requested-with 14 'Referer':'https://www.barclays.co.uk/mortgages/mortgage-calculator', 15 'User-Agent':'Mozilla/5.0(Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36', 16 'X-Requested-With':'XMLHttpRequest', 17 }) 18estimatedPropertyValue = 500000 19repaymentAmount = 5888 20months = 410 21data = {"header":{"flowId":"0"}, 22 "body": 23 {"wantTo":"BAH", 24 "estimatePropertyValue":estimatedPropertyValue, 25 "borrowAmount":repaymentAmount, 26 "interestOnlyAmount":0, 27 "repaymentAmount":repaymentAmount, 28 "ltv":round(repaymentAmount/estimatedPropertyValue*100), 29 "totalTerm":months, 30 "purchaseType":"Repayment"}} 31 32r = session.post(url,json=data) 33 34#to protect for exceese text that output header 35print(r.json()['header']) 36
試したこと
インターネットで調べたところ、様々なエラー解決方法があることを知り、インデントや隠れ空白文字、全角半角文字、綴りを一通り確認しました。正直なところ、エラーの意味を把握し切れていない部分があります。35行目にExpecting value~
となっていることから引数に問題があるのかと思い、重点的にみていましたが何も改善しておりません。このエラーは引数によるエラーなのでしょうか?それともjson自体に何か問題があるのでしょうか?よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
以前別の質問のエラー解決の際なのですがrequestsのバージョンの違いによるエラー(バグ)があったこともあり今回もそのようなことは考えられますでしょうか?僕の憶測ではありますがよろしくお願いいたします。
##ライブラリのバージョン
**requests 2.23.0 **
Package Version
alembic 1.4.2
beautifulsoup4 4.8.2
certifi 2019.11.28
chardet 3.0.4
dataset 1.3.1
docopt 0.6.2
et-xmlfile 1.0.1
idna 2.9
jdcal 1.4.1
Mako 1.1.2
MarkupSafe 1.1.1
openpyxl 2.4.11
pip 20.0.2
python-dateutil 2.8.1
python-editor 1.0.4
records 0.5.3
selenium 3.141.0
setuptools 41.2.0
six 1.14.0
soupsieve 2.0
SQLAlchemy 1.3.15
tablib 1.1.0
urllib3 1.25.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/20 00:59