2017-01-15 3 views
0

Hier ist der Fehler:Python Fehler - Attribute: 'NoneType' Objekt hat kein Attribut 'split'

File "f ** py.", Zeile 34, in Modul

url_type = url.split('-')[0][-2:] # 

Hier wird der ganze Block:

fit_urls = [] 
for event_url in event_urls: 
    print event_url 
    try: 
    sock = urllib.urlopen(event_url) 
    event_html = sock.read() 
    event_soup = BeautifulSoup(event_html) 

    tds = event_soup.find_all('td') 
    for td in tds: 
     for link in td.find_all('a'): 
      url = link.get('href') 
      url_type = url.split('-')[0][-2:] letters 
      if url_type == 'ht': 
       #print url 
       fit_urls.append(url) 

except HTTPError: 
    pass 

`

+0

Es gab keine Links. 'link.get' produzierte' None', weil es kein 'href' darin gab. – TigerhawkT3

+0

sieht aus wie 'url = link.get ('href')' gibt 'None' zurück, d. H. Es wird keine URL in der Verbindung gefunden (oder keine' Verbindung' gefunden, abhängig davon, wie sich die Bibliothek verhält) – user783836

Antwort

0

das liegt daran, dass jede Ihrer 'link' nicht diemitAttribut. Sie können es überprüfen, indem Sie print link hinzufügen, bevor Sie url = link.get('href') tun.

Um dieses Problem zu beheben, können Sie eine zusätzliche if Prüfung hinzufügen solche Links zu filtern wie:

for td in tds: 
    for link in td.find_all('a'): 
     url = link.get('href') 
     if url: # additional check. will be `False` when `'url'` will be `None` 
      url_type = url.split('-')[0][-2:] letters 
      # Your rest of the code 
0

Es sieht aus wie url = link.get('href')None zurückkehrt. Sie können nach None in Ihrem Loop suchen:

for td in tds: 
    for link in td.find_all('a'): 
     url = link.get('href') 
     if not url: 
      continue 
     url_type = url.split('-')[0][-2:] letters 
     if url_type == 'ht': 
      #print url 
      fit_urls.append(url) 
Verwandte Themen