Новости - это лучший способ узнать, что происходит в мире. Для инженеров по обработке данных новостные статьи являются одним из лучших способов сбора нереальных объемов данных. Больше данных означает больше понимания, а это единственный способ внедрить инновации в наши технологии и поднять человечество на более высокие высоты, чем когда-либо прежде. Но новостей очень много, и собрать все данные вручную просто невозможно. Какой лучший способ автоматического получения данных? Ответ - веб-скрейпинг новостных статей с помощью python.
В этой статье мы создадим веб-скребок для соскабливания последних новостных статей из различных газет и сохранения их в виде текста. Мы пройдем через следующие два шага, чтобы получить глубокий анализ того, как выполняется весь процесс.
Не стесняйтесь переходить к любым разделам, чтобы узнать больше о том, как выполнять веб-скреппинг для новостных статей с помощью python
Если мы хотим извлечь важную информацию с какого-либо сайта или веб-страницы, важно знать, как работает этот сайт. Когда мы переходим на определенный URL-адрес с помощью любого веб-браузера (Chrome, Firefox, Mozilla и т. д.), эта веб-страница представляет собой комбинацию трех технологий,
HTML (язык разметки гипертекста): HTML определяет содержание веб-страницы. Это стандартный язык разметки для добавления содержимого на сайт. Например, если вы хотите добавить на свой сайт текст, изображения или любой другой материал, HTML поможет вам в этом.
CSS (каскадные таблицы стилей): Используется для стилизации веб-страниц. CSS обрабатывает все визуальные эффекты, которые вы видите на конкретном сайте.
JavaScript: JavaScript - это мозг веб-страницы. JavaScript выполняет всю логическую обработку и функциональность веб-страницы. Таким образом, он позволяет сделать содержание и стиль интерактивными.
Эти три языка программирования позволяют нам создавать и управлять аспектами веб-страницы.
Я полагаю, что для этой статьи вы знаете основы веб-страницы и HTML. Некоторые понятия HTML, такие как divs, теги, заголовки и т.д., могут быть очень полезны при создании этого веб-скрапера. Вам не нужно знать все, а только основы дизайна веб-страницы и то, как информация содержится на ней, и все готово.
В Python есть несколько пакетов, которые позволяют нам соскабливать информацию с веб-страниц. Мы продолжим с BeautifulSoup, потому что это одна из самых известных и простых в использовании библиотек Python для веб-скрейпинга.
BeautifulSoup лучше всего подходит для разбора HTML-содержимого URL и доступа к нему с помощью тегов и меток. Поэтому будет удобно извлекать определенные фрагменты текста с сайта.
С помощью всего 3-5 строк кода мы можем совершить волшебство и извлечь любой текст выбранного нами сайта из Интернета, что делает его простым в использовании, но мощным пакетом.
Мы начнем с самых основ. Чтобы установить пакет библиотек, введите следующую команду в дистрибутив Python,
! pip install beautifulsoup4
Мы также будем использовать модуль 'requests', поскольку он предоставляет BeautifulSoup HTML-код любой страницы. Чтобы установить его, введите следующую команду в ваш дистрибутив Python,
! pip install requests
Этот модуль запросов позволит нам получить HTML-код с веб-страницы и перемещаться по ней с помощью пакета BeautfulSoup. Две команды, которые значительно облегчат нашу работу, это
find_all(element tag, attribute): Эта функция принимает в качестве параметров тег и атрибуты и позволяет найти любой элемент HTML на веб-странице. Она определит все элементы одного типа. Вместо нее можно использовать find(), чтобы получить только первый элемент.
get_text(): После того как мы нашли заданный элемент, эта команда позволяет извлечь внутренний текст.
Чтобы просмотреть HTML-код нашей веб-страницы и найти элементы, которые мы хотим извлечь, мы можем воспользоваться опцией 'inspect element', щелкнув правой кнопкой мыши на странице или просто нажав Ctrl+F. Это позволит вам увидеть исходный код веб-страницы.
Как только мы найдем интересующие нас элементы, мы получим HTML-код с помощью модуля requests, а для извлечения этих элементов воспользуемся BeautifulSoup.
Для этой статьи мы будем работать с английской газетой EL Paris. Мы соскребем заголовки новостных статей с первой страницы, а затем текст.
Если мы проанализируем HTML-код новостных статей, то увидим, что статья на первой странице имеет следующую структуру,
The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:
импортировать запросы
из bs4 import BeautifulSoup
Получив HTML-содержимое с помощью модуля requests, мы можем сохранить его в переменной coverpage:
# Запрос
r1 = requests.get(url)
r1.status_code
# Мы сохраним в coverpage содержимое титульной страницы
coverpage = r1.content
Далее мы определим переменную soup,
# Создание супа
soup1 = BeautifulSoup(coverpage, 'html5lib')
В следующей строке кода мы найдем искомые элементы,
# Идентификация новостей
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
Используя final_all, мы получаем все вхождения. Поэтому он должен вернуть список, в котором каждый элемент является новостной статьей,
Чтобы извлечь текст, мы используем следующую команду:
coverpage_news[4].get_text()
Если мы хотим получить доступ к значению атрибута (в нашем случае ссылки), мы можем использовать следующую команду,
coverpage_news[4]['href']
Это позволит нам получить ссылку в виде обычного текста.
Если вы усвоили все понятия до этого момента, вы можете проводить веб-скрептинг любого контента по своему усмотрению.
Следующий шаг включает в себя доступ к содержимому каждой новостной статьи с помощью атрибута href, получение исходного кода для поиска абзацев в HTML-коде и, наконец, получение их с помощью BeautifulSoup. Это тот же процесс, который мы описали выше, но нам нужно определить теги и атрибуты, которые идентифицируют содержимое новостной статьи.
Код для полной функциональности приведен ниже. Я не буду объяснять каждую строку отдельно, так как код прокомментирован, и его можно понять, прочитав комментарии.
количество_статей = 5
# Пустые списки для содержимого, ссылок и заголовков
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# только новостные статьи (есть также альбомы и другие вещи)
if "inenglish" not in coverpage_news[n].find('a')['href']:
continue
# Получение ссылки на статью
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Получение заголовка
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Чтение содержания (оно разделено на абзацы)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Объединение параграфов
list_paragraphs = []
for p in np.arange(0, len(x)):
paragraph = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
Давайте поместим извлеченные статьи в следующее:
# df_features
df_features = pd.DataFrame(
{'Article Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links})
df_features
df_show_info
Чтобы определить лучший пользовательский опыт, мы также измерим время, которое требуется скрипту для получения новостей. Для этого мы определим функцию, а затем вызовем ее. Опять же, я не буду объяснять каждую строчку кода, так как код прокомментирован. Чтобы получить ясное понимание, вы можете прочитать эти комментарии.
def get_news_elpais():
# url definition
url = "https://elpais.com/elpais/inenglish.html"
# Request
r1 = requests.get(url)
r1.status_code
# We'll save in coverpage the cover page content
coverpage = r1.content
# Soup creation
soup1 = BeautifulSoup(coverpage, 'html5lib')
# News identification
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
len(coverpage_news)
number_of_articles = 5
# Empty lists for content, links and titles
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# only news articles (there are also albums and other things)
if "inenglish" not in coverpage_news[n].find('a')['href']:
continue
# Getting the link of the article
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Getting the title
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Reading the content (it is divided in paragraphs)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Unifying the paragraphs
list_paragraphs = []
for p in np.arange(0, len(x)):
paragraph = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
# df_features
df_features = pd.DataFrame(
{'Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links,
'Newspaper': 'El Pais English'})
return (df_features, df_show_info)
ProxyScrape является одним из самых популярных и надежных прокси-провайдеров в Интернете. Три прокси-сервиса включают выделенные прокси-серверы в центрах обработки данных, прокси-серверы для жилых домов и прокси-серверы премиум-класса. Итак, какой же лучший HTTP-прокси для веб-скраппинга новостных статей с помощью python? Прежде чем ответить на этот вопрос, лучше всего ознакомиться с особенностями каждого прокси-сервера.
Выделенный прокси-сервер центра обработки данных лучше всего подходит для высокоскоростных онлайн-задач, таких как потоковая передача больших объемов данных (по размеру) с различных серверов для целей анализа. Это одна из основных причин, по которой организации выбирают выделенные прокси для передачи больших объемов данных за короткий промежуток времени.
Выделенный прокси центр данных имеет несколько особенностей, таких как неограниченная пропускная способность и одновременные соединения, выделенные HTTP прокси для легкого общения и IP аутентификация для большей безопасности. Благодаря 99,9% времени безотказной работы, вы можете быть уверены, что выделенный центр данных всегда будет работать во время любой сессии. И последнее, но не менее важное: ProxyScrape обеспечивает отличное обслуживание клиентов и поможет вам решить проблему в течение 24-48 рабочих часов.
Далее жилой прокси. Residential - это прокси для всех обычных потребителей. Основная причина в том, что IP-адрес резидентного прокси похож на IP-адрес, предоставляемый интернет-провайдером. Это означает, что получить разрешение от целевого сервера на доступ к его данным будет проще, чем обычно.
Другая особенность ProxyScrape's residential proxy - это вращающийся прокси. Вращающийся прокси поможет вам избежать перманентного бана на вашем аккаунте, потому что ваш резидентный прокси динамически меняет ваш IP-адрес, что затрудняет для целевого сервера проверку того, используете вы прокси или нет.
Помимо этого, другими особенностями жилого прокси являются: неограниченная пропускная способность, наряду с одновременным подключением, выделенные HTTP/s прокси, прокси в любое время сессии из-за 7 миллионов плюс прокси в пуле прокси, аутентификация имени пользователя и пароля для большей безопасности, и последнее, но не менее важное, возможность изменить страну сервера. Вы можете выбрать желаемый сервер, добавив код страны к аутентификации имени пользователя.
Последний - это премиум-прокси. Премиум-прокси - это то же самое, что и выделенные прокси в центрах обработки данных. Функциональность остается такой же. Основное отличие - доступность. В премиум-прокси список прокси (список, содержащий прокси) доступен каждому пользователю в сети ProxyScrape. Именно поэтому премиум-прокси стоят дешевле, чем выделенные прокси в центрах обработки данных.
Итак, каково наилучшее решение для лучшего HTTP-прокси для веб-скрейпинга новостных статей с помощью python? Ответом будет "жилой прокси." Причина проста. Как было сказано выше, жилой прокси является вращающимся прокси, что означает, что ваш IP-адрес будет динамически меняться в течение определенного периода времени, что может быть полезно, чтобы обмануть сервер, отправляя много запросов в течение небольшого промежутка времени без получения IP-блока.
Далее лучше всего изменить прокси-сервер в зависимости от страны. Вам просто нужно добавить ISO_CODE страны в конце IP-аутентификации или аутентификации по имени пользователя и паролю.
Предлагаемое чтение:
Библиотека python называется "BeautifulSoup" и может автоматически соскабливать данные из любой новостной статьи. Единственным требованием является базовое знание HTML для нахождения HTML-тега в исходном коде страницы, который содержит данные, которые необходимо соскрести.
Ответ: это зависит от условий сайта. Но большинство новостных статей можно соскабливать, поскольку вся информация намеренно предоставляется общественности. Все публичные данные можно соскабливать, если ваш метод соскабливания не вредит данным или владельцу сайта.
С помощью библиотеки python под названием "BeautifulSoup" можно соскабливать Google News или любые новостные статьи, используя python. Установите библиотеку и надежный прокси-сервер для предотвращения блокировки IP-адреса целевого сервера.
В этой статье мы рассмотрели основы веб-скрейпинга, поняв основы дизайна и структуры потока веб-страниц. Мы также проделали практическую работу по извлечению данных из новостных статей. При правильном подходе веб-скрепинг может творить чудеса. Например, на основе извлеченных данных можно создать полностью оптимизированную модель, которая сможет предсказывать категории и показывать резюме пользователю. Самое главное - определить свои требования и понять структуру страницы. В Python есть несколько очень мощных, но простых в использовании библиотек для извлечения данных по вашему выбору. Это сделало веб-скрейпинг очень простым и увлекательным.
Важно отметить, что этот код полезен для извлечения данных с данной конкретной веб-страницы. Если мы хотим сделать это с любой другой страницы, нам нужно оптимизировать наш код в соответствии со структурой этой страницы. Но как только мы узнаем, как их определить, процесс будет точно таким же.
В этой статье мы надеемся подробно рассказать о практическом подходе к веб-скреппингу новостных статей с помощью python. Следует помнить, что прокси является абсолютной необходимостью для веб-скрейпинга. Он помогает предотвратить любые блокировки IP-адресов целевого сервера. ProxyScrape python предоставляет отличный и надежный прокси-сервер по месту жительства для ваших проектов по веб-скраппингу новостных статей с использованием python.