ich die Tabelle aller Beatles-Songs nehmen will und es in JSON Bildung zu analysieren, mit Song weicht kategorisiert wird von McCartney und Lenon geschrieben worden ...Parsing lxml von einer URL genommen JSon
Die Daten ich bekomme, wenn ich den folgenden Code ist lxml Bildung Linien laufen:
from bs4 import BeautifulSoup
import urllib
import requests
import pandas as pd
import json
import collections
from collections import OrderedDict
url = 'https://en.wikipedia.org/wiki/List_of_songs_recorded_by_the_Beatles'
r = requests.get(url)
data = r.text
table_data = [[[cell.text for cell in row("td")],[cell.text for cell in row("th")]] for row in BeautifulSoup(data,"lxml").find_all('table')[4]("tr")]
for row in table_data:
for i in row:
if len(i) > 0:
print(i)
wenn ich jetzt die Verwendung von urllib versuchen Sie, in nicht funktioniert.
Zum Beispiel dieser Code verarbeitet nicht aufgrund der folgenden Fehler:
from bs4 import BeautifulSoup
import urllib
import requests
import pandas as pd
import json
import collections
from collections import OrderedDict
url = 'https://en.wikipedia.org/wiki/List_of_songs_recorded_by_the_Beatles'
response = urllib.request.urlopen(url)
r = json.loads(response)
data = r.text
print (data)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-217-b9bf4e8bed5c> in <module>()
9 url = 'https://en.wikipedia.org/wiki/List_of_songs_recorded_by_the_Beatles'
10 response = urllib.request.urlopen(url)
---> 11 r = json.loads(response)
12 data = r.text
13 print (data)
C:\Users\Mark\Anaconda3\lib\json\__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
310 if not isinstance(s, str):
311 raise TypeError('the JSON object must be str, not {!r}'.format(
--> 312 s.__class__.__name__))
313 if s.startswith(u'\ufeff'):
314 raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",
TypeError: the JSON object must be str, not 'HTTPResponse'
Was könnte die Lösung sein? Ich habe weder in der API noch in google/stackoverflow etwas hilfreiches gefunden.
Bitte [Bearbeiten] Ihre Frage ein und beschreiben, was genau bedeutet "dieser Code nicht verarbeitet". Wenn ein Fehler auftritt, fügen Sie bitte auch das vollständige Traceback hinzu. – martineau
gerade hinzugefügt den Fehler –