私は、htmlコードに埋め込まれているjsonファイルの内容を解析して保存します。しかし、関連する文字列を分離してjson
パッケージでロードしようとすると、エラーJSONDecodeError: Extra data
が表示され、何が原因なのか不明です。pythonでウェブサイトからjsonファイルを解析する
関連するコードに実際に複数の辞書が含まれている可能性があり、問題がある可能性がありますが、これが当てはまる場合は進める方法がわかりません。私のコードは以下の通りです。どんな提案も高く評価されました!
あなたはこのように見える文字列を解析しようとしているfrom bs4 import BeautifulSoup
import urllib.request
from urllib.request import HTTPError
import csv
import json
import re
def left(s, amount):
return s[:amount]
def right(s, amount):
return s[-amount:]
def mid(s, offset, amount):
return s[offset:offset+amount]
url= "url"
from urllib.request import Request, urlopen
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
try:
s = urlopen(req,timeout=200).read()
except urllib.request.HTTPError as e:
print(str(e))
soup = BeautifulSoup(s, "lxml")
tables=soup.find_all("script")
for i in range(0,len(tables)):
if str(tables[i]).find("TimeLine.init")>-1:
dat=str(tables[i]).splitlines()
for tbl in dat:
if str(tbl).find("TimeLine.init")>-1:
s=str(tbl).strip()
j=json.loads(s)
複数の辞書が含まれている場合は、一度に1つずつ解析する必要があります。賢明な解析をせずに、文字列をそれらに対応する部分に分割するのは難しいです。毎回失敗しますか?それは正確に失敗する文字列は何ですか? '' json.loads'が呼び出される前に 's'はどのように見えますか? –
はかなり長く、約50k文字ですので、完全に投稿することはできません。あなたの技術的な問題に直接的には捧げられていませんが、 – user3725021
でも抽出は追加されます。内部データのためにウェブサイトコンテンツを解析することはめったに良い考えではありません。主にあなたが[許可されていない]ため(http://www.heraldsun.com.au/help/termsconditions)、変更される可能性があるためです。 – dahrens