Найти - Пользователи
Полная версия: Парсер: ошибка IndexError: list index out of range
Начало » Python для новичков » Парсер: ошибка IndexError: list index out of range
1
i8080
Приветствую всех.
При попытке спарсить поледнюю новость из Источника скрипт выдает ошибку IndexError: list index out of range.

Вот часть кода на которую питон ссылается:

     # Поиск по всем елементам страницы внутри "div" с классом "news-list"
    for element in soup.find_all('div', class_='row main-news-row table-o3 rubric_list'):
        try:
            # Заголовок статьи
            title = element.find("span", class_="news-item-title").text.strip()
            print(title)
            # Ссылка на статью
            link = domen+element.find("a", class_="news-desc-long").get("href")        
            print(link)
            posts.append([title, link])
        except Exception as error:
            print(error)
xam1816
 import requests
from bs4 import BeautifulSoup
session = requests.Session()
url = r'http://tv-gubernia.ru/novosti/proisshestviya/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
'Cookie': 'beget=begetok'
}
resp = session.get(url, headers=headers)
html = resp.text
soup = BeautifulSoup(html,'lxml')
class NewsParser:
    def __init__(self, soup):
        self.date = soup.find('span',class_="news-item-date").text
        self.title = soup.find('span', class_="news-item-title").text
        self.url_path= soup.a['href'] if soup.find('a',class_="news-desc-long") else None
last_news_block = soup.find('div',class_='news-item news-item-double')
if last_news_block:
    news = NewsParser(last_news_block)
    print(news.title)
    print(news.date)
    print(news.url_path)

вывод

 Директора воронежской компании задержали за коммерческий подкуп
Сегодня 09:41
/novosti/proisshestviya/kriminal/direktora_voronezhskoj_kompanii_zaderzhali_za_kommercheskij_podkup/
xam1816
 new_lst = []
for element in soup.find('div', class_='row main-news-row table-o3 rubric_list').findChildren('div',recursive=False):
        # print(element)
        # print('\n===========\n')
        new_lst.append(NewsParser(element))
for n in new_lst:
    print('{:<30}{}'.format(n.date,n.title))

Сегодня 09:41                 Директора воронежской компании задержали за коммерческий подкуп
Вчера 10:59 Пешеход спровоцировал ДТП у Центрального рынка в Воронеже (ВИДЕО)
13:24, 01 февраля 2022 Один погиб и двое пострадали в ДТП на улице Софьи Перовской в Воронеже
12:31, 01 февраля 2022 Осуждённый за резонансное убийство у «Иль Токио» захотел досрочно выйти на свободу из воронежской колонии
19:02, 31 января 2022 Районы с самым высоким числом убийств назвала прокуратура Воронежской области

Process finished with exit code 0
i8080
xam1816
Спасибо. Вы очень помогли
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB