2017-01-15 3 views
0

Здесь ошибка:Python Ошибка - AttributeError: объект 'NoneType' не имеет атрибута "не разбиваться

файла "F ** р.", Строка 34, в модуле

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

Здесь весь блок:

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

Не было ссылок. 'link.get' создал' None', потому что в нем не было '' href''. – TigerhawkT3

+0

выглядит так: 'url = link.get ('href')' возвращает 'None' i.e. Ur ссылка не найдена в ссылке (или никакой' link' не найден, в зависимости от того, как ведет себя библиотека) – user783836

ответ

0

это потому, что любой из ваших 'link' не имея 'href' атрибут. Вы можете подтвердить это, добавив print link перед тем, как сделать url = link.get('href').

Для того, чтобы исправить это, вы можете добавить дополнительные if чек фильтровать такие ссылки, как:

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

Похоже url = link.get('href') возвращается None. Вы можете проверить на None в вашей петле:

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) 
Смежные вопросы