Пропуск пустых строк в BeautifulSoup - PullRequest
1 голос
/ 05 февраля 2020

В настоящее время я пытаюсь собрать данные из 1001TrackLists, веб-сайта, на котором перечислены треки в виде миксов DJ, используя BeautifulSoup.

Если дорожка не является идентификатором в миксе, 1001TrackLists оставляет ее как «ID-ID» в таблице данных, которая отображается как пустая запись в очищенном коде и портит my для l oop.

Как мне заставить Python пропустить "пустые" идентификаторы в списках дорожек и продолжить очистку данных после пустых идентификаторов?

Мой код пока:


headers = {'User-Agent': 'Chrome/51.0.2704.103'}
page_link  = 'https://www.1001tracklists.com/tracklist/7mzt0y9/boddika-joy-orbison-rinse-fm-hessle-audio-cover-show-2014-01-16.html'
page_response = requests.get(page_link, headers=headers)
soup = bs(page_response.content, "html.parser")

tracknumbers = []
tracknames = []
artistnames = []
mixnames = []
dates = []


tracknames_scrape = soup.find_all("div", class_="tlToogleData", div=True)
artistnames_scrape = soup.find_all("meta", itemprop="byArtist")

for (i, track) in enumerate(tracknames_scrape):
    tracknumbers.append(i+1)
    trackname = track.meta['content']
    tracknames.append(trackname)
    print(str(i+1) + str(". ") + trackname)

В настоящее время я могу вернуть все треки, пока не нажму пустую запись, после чего получаю следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-de6ecd3caa59> in <module>
      1 for (i, track) in enumerate(tracknames_scrape):
      2     tracknumbers.append(i+1)
----> 3     trackname = track.meta['content']

TypeError: 'NoneType' object is not subscriptable

Сценарий работает отлично, если я использую URL, который не имеет пустого идентификаторы дорожек.

1 Ответ

0 голосов
/ 05 февраля 2020

Используйте следующий селектор css для получения названий дорожек.

import requests
from bs4 import BeautifulSoup as bs
headers = {'User-Agent': 'Chrome/51.0.2704.103'}
page_link  = 'https://www.1001tracklists.com/tracklist/7mzt0y9/boddika-joy-orbison-rinse-fm-hessle-audio-cover-show-2014-01-16.html'
page_response = requests.get(page_link, headers=headers)
soup = bs(page_response.content, "html.parser")

tracknumbers = []
tracknames = []
artistnames = []
mixnames = []
dates = []


tracknames_scrape =soup.select('div[itemprop="tracks"]>[itemprop="name"]')
#artistnames_scrape = soup.find_all("meta", itemprop="byArtist")

for (i, track) in enumerate(tracknames_scrape):
    tracknumbers.append(i+1)
    trackname = track['content']
    tracknames.append(trackname)
    print(str(i+1) + str(". ") + trackname)

Выход :

1. Soft Machine - Snodland
2. Craig Leon - The Customs Of The Age Disturbed
3. Seven Davis Jr. - Thanks
4. Gadi Mizrahi - I'll Set Your House
5. Baby Ford & The iFach Collective - Word For Word
6. Panzer Knacker - Rollin' On The Side Of Psycho
7. 69 - Poi Beats
8. Midi Rain - Shine (DJ Pierre Chicago House Mix)
9. Sunpeople - Check Your Buddha (Sven Väth Remix)
10. Eduardo De La Calle - Madhusudhana
11. Aardvarck - The Antdance
12. Boddika & Joy Orbison - In Here
13. Mike Parker - Lustrations Eight (Contours)
14. Peter Van Hoesen - Axis Mundi
15. Sleeparchive - Bleep 01
16. Conforce - When It Appeared
17. Brommage Dub - Fettwise
18. Matrixxman - Protocol
19. JuJu & Jordash - Powwow
20. Gesloten Cirkel - Yamagic
21. Mike Dehnert - Mischkaa
22. Jerome Sydenham & Joe Claussell - Rhythm
23. Ratchett Traxxx - Nut On U
24. Kenny Dope & Terry Hunter pres. Mass Destruction - No Hook
25. Radio Slave - Don't Stop No Sleep
26. Truncate - Focus
27. Maurizio - Domina (Maurizio Mix Edit)
28. Shed - Atmo - Action
29. AFX - Boxing Day
30. Boddika & Joy Orbison - More Maim
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...