Как парсить веб-страницы с помощью Python
Table Of Content
Парсинг веб-страниц - это метод сбора данных из интернета. Согласно Википедии, парсинг веб-страниц это:
Парсинг веб-страниц, сбор данных с веб-страниц или извлечение данных из веб-страниц - это сбор данных с веб-сайтов. Программное обеспечение для парсинга веб-страниц может получать доступ к Всемирной паутине непосредственно с использованием протокола передачи гипертекста или через веб-браузер.
Здесь мы будем парсить веб-страницы с использованием библиотеки Beautiful Soup для Python.
Давайте сразу же попробуем парсить веб-страницу с новостного сайта Kompas.com, связанную с радостной новостью для студентов.
Вы также можете попробовать парсить другие веб-сайты. Хорошо, давайте перейдем к кодированию:
Импорт библиотек
Сначала мы импортируем библиотеки, которые будем использовать, а именно requests и Beautiful Soup:
import requests
from bs4 import BeautifulSoup
Парсинг
Напишите следующий код, где переменная page - это адрес веб-сайта, который мы хотим спарсить.
page = requests.get('https://www.kompas.com/edu/read/2020/06/19/152034871/ini-kebijakan-baru-mendikbud-nadiem-soal-keringanan-ukt-mahasiswa')
soup = BeautifulSoup(page.text, 'html.parser')
Затем мы должны проверить, успешно ли получен ответ от запроса.
if page.status_code==200:
print('Success')
Если вывод из команды выше "Success", то мы можем перейти к следующему шагу.
Откройте целевой веб-сайт снова, а затем мы должны посмотреть на структуру HTML этого веб-сайта. Мы можем использовать функцию, предоставленную веб-браузером, такую как Chrome или другой, а именно Inspect. Существует 2 способа:
Затем мы ищем элемент веб-сайта, содержащий информацию или данные, которые мы хотим использовать.
Если вы нашли элемент, содержащий нужную информацию, то напишите следующий код. В этом случае я хочу получить текст новости на этом веб-сайте, который, кстати, находится в элементе <p>
.
articles = soup.find_all('p')
for p in articles:
print(p.text)
Намерение команды выше заключается в том, чтобы система найти все элементы p, и каждый элемент p будет поочередно печататься системой. Вот весь код, объединенный.
import requests
from bs4 import BeautifulSoup
import pandas as pdpage = requests.get('https://www.kompas.com/edu/read/2020/06/19/152034871/ini-kebijakan-baru-mendikbud-nadiem-soal-keringanan-ukt-mahasiswa')
soup = BeautifulSoup(page.text, 'html.parser')
if page.status_code==200:
articles = soup.find_all('p')
for p in articles:
print(p.text)
Вы также можете использовать следующую команду, чтобы напечатать каждый элемент.
for p in soup.find_all('p'):
print(p.text)
Вот пример вывода кода выше. Довольно полезно, не так ли?
Хорошо, пока все, до встречи в следующий раз......