#python #web-scraping #beautifulsoup
#python #очистка веб-страниц #beautifulsoup
Вопрос:
Я пытался очистить заголовки новостных статей в Интернете, но я сталкиваюсь с «Ошибкой индекса» при следующем коде. Я сталкиваюсь с проблемой только в последней строке кода.
import requests
from bs4 import BeautifulSoup
URL= 'https://www.ndtv.com/coronavirus?pfrom=home-mainnavgation'
r1 = requests.get(URL)
coverpage = r1.content
soup1 = BeautifulSoup(coverpage, 'html5lib')
coverpage_news = soup1.find_all('h3', class_='item-title')
coverpage_news[4].get_text()
Это ошибка:
IndexError Traceback (most recent call last)
<ipython-input-10-f7f1f6fab81c> in <module>
6 soup1 = BeautifulSoup(coverpage, 'html5lib')
7 coverpage_news = soup1.find_all('h3', class_='item-title')
----> 8 coverpage_news[4].get_text()
IndexError: list index out of range
Комментарии:
1. Это означает, что на странице нет 5 элементов, которые удовлетворяют критериям, которые вы ищете.
2. Я не вижу ничего
<h3 class="item-title">
на этой странице.3. Я понимаю
<h3 class="dr-advice_title">
, это то, что вы ищете? Я также вижу много<a ... class="item-title">
4. Кроме
<h3 class="list-txt">
того, они содержат<a class="item-title">
5. Итак, что именно вы пытаетесь извлечь?
Ответ №1:
Используется soup1.select()
для поиска вложенных элементов, соответствующих селектору CSS:
coverpage_news = soup1.select("h3 a.item-title")
Это позволит найти a
элемент, class="item-title"
который является потомком h3
элемента.
Комментарии:
1. этот код дает мне только один результат, но я хочу очистить все заголовки веб-страницы
2. Он должен найти все совпадения.
select_one()
возвращает только первое совпадение.
Ответ №2:
Попробуйте изменить:
coverpage_news = soup1.find_all('h3', class_='item-title')
Для
coverpage_news = soup1.find_all('h3', class_='list-txt')
Ответ №3:
Немного изменив полезный ответ @ Barmar’а, чтобы показать все заголовки:
coverpage_news = soup1.select("h3 a.item-title")
for link in coverpage_news:
print(link.text)
Вывод:
US Covid Infections Cross 9 Million, Record 1-Day Spike Of 94,000 Cases
Johnson amp; Johnson Plans To Test COVID-19 Vaccine On Youngsters Soon
Global Stock Markets Decline As Coronavirus Infection Rate Weighs
Cristiano Ronaldo Recovers From Coronavirus
Reliance's July-September Profit Falls 15% As Covid Slams Oil Business
"Likely To Know By December If We'll Have Covid Vaccine": Top US Expert
With No Local Case In A Record 200 Days, This Country Is World's Envy
Delhi Blames Pollution For Covid Spike At High-Level Health Ministry Meet
Delhi Covid Cases Above 5,000 For 3rd Straight Day, Spike In ICU Patients
2 Million Indians Returned From Abroad Under Vande Bharat Mission: Centre
Existing Lockdown Restrictions Extended In Maharashtra Till November 30
Can TB Vaccine Protect Elderly From Covid?
Is The Covid-19 Situation Worsening In Delhi?
What's The Truth Behind India's Falling Covid Numbers?
"Slight Laxity Can Lead To Spike": AIIMS Director As India Sees Drop In Covid Cases