Code: Alles auswählen
<div class="table-container">
<table class="table table-bordered table-condensed table-striped" id="track-table">
<thead >
<tr>
<th class="artist orderable">
<a href="?artist=&title=&bpm=&genre=31&sort=artist">Artist</a>
</th>
<th class="orderable title">
<a href="?artist=&title=&bpm=&genre=31&sort=title">Title</a>
</th>
<th class="mix orderable">
<a href="?artist=&title=&bpm=&genre=31&sort=mix">Mix</a>
</th>
<th class="bpm orderable">
<a href="?artist=&title=&bpm=&genre=31&sort=bpm">BPM</a>
</th>
<th class="genre orderable">
<a href="?artist=&title=&bpm=&genre=31&sort=genre">Genre</a>
</th>
<th class="orderable rlabel">
<a href="?artist=&title=&bpm=&genre=31&sort=rlabel">Label</a>
</th>
<th class="orderable year">
<a href="?artist=&title=&bpm=&genre=31&sort=year">Year</a>
</th>
</tr>
</thead>
<tbody >
<tr class="odd">
<td class="artist"><a href="/music/by/aaliyah">Aaliyah</a></td>
<td class="title">One In A Million</td>
<td class="mix">—</td>
<td class="bpm">122</td>
<td class="genre">Pop</td>
<td class="rlabel">Atlantic</td>
<td class="year">2017</td>
</tr>
<tr class="even">
<td class="artist"><a href="/music/by/aaron-carter">Aaron Carter</a></td>
<td class="title">Aaron's Party (come Get It)</td>
<td class="mix">—</td>
<td class="bpm">117</td>
<td class="genre">Pop</td>
<td class="rlabel">Jive Records</td>
<td class="year">2000</td>
</tr>
...
<tr class="odd">
<td class="artist"><a href="/music/by/aaron-carter">Aaron Carter</a></td>
<td class="title">Don't Say Goodbye</td>
<td class="mix">PO PopRoXxX Intro Edit</td>
<td class="bpm">60</td>
<td class="genre">Pop</td>
<td class="rlabel">PO PopRoXxX Intro Edit</td>
<td class="year">2018</td>
</tr>
<tr class="even">
<td class="artist"><a href="/music/by/aaron-carter">Aaron Carter</a></td>
<td class="title">Don't Say Goodbye</td>
<td class="mix">PO PopRoXxX Quick Edit</td>
<td class="bpm">60</td>
<td class="genre">Pop</td>
<td class="rlabel">PO PopRoXxX Quick Edit</td>
<td class="year">2018</td>
</tr>
</tbody>
</table>
Hier der entsprechende Python Code:
Code: Alles auswählen
def extractData(url, file_name):
page = requests.get(url)
soup = bs(page.content, "html.parser")
odds = soup.find_All("tr", class_="odd")
evens = soup.find_All("tr", class_="even")
oddsANDevens = {}
for even in evens:
artist = even.find("td", class_="artist")
title = even.find("td", class_="title")
mix = even.find("td", class_="mix")
bpm = even.find("td", class_="bpm")
year = even.find("td", class_="year")
oddsANDevens.update({title: {'artist': artist, 'mix': mix, 'bpm': bpm, 'year': year}})
for odd in odds:
artist = odd.find("td", class_="artist")
title = odd.find("td", class_="title")
mix = odd.find("td", class_="mix")
bpm = odd.find("td", class_="bpm")
year = odd.find("td", class_="year")
oddsANDevens.update({title: {'artist': artist, 'mix': mix, 'bpm': bpm, 'year': year}})
with open(file_name, "w") as file:
json.dump(oddsANDevens, file)
Code: Alles auswählen
odds = soup.find_All("tr", class_="odd")
TypeError: 'NoneType' object is not callable
Meine Frage ist also, navigiere ich falsch mit bs4? Oder kann mir irgendjemand einen Tip geben, wie ich mit der Error Meldung umzugehen habe?
Vielen Dank für jede Hilfe zu bs4 Anwendung und Lösung meines Problems.
Ps: Hier die entsprechende url zur verwendeten Website: https://www.bpmdatabase.com/music/sear ... &genre=31