Очистите веб-сайт с помощью этого учебника по красивому супу по Python

Очистите веб-сайт с помощью этого учебника по красивому супу по Python

Beautiful Soup - это библиотека Python с открытым исходным кодом. Он использует навигационные парсеры для очистки содержимого файлов XML и HTML. Вам нужны данные для нескольких аналитических целей. Однако, если вы новичок в Python и веб-парсинге, стоит попробовать библиотеку Python Beautiful Soup для проекта веб-парсинга.





С помощью библиотеки Beautiful Soup с открытым исходным кодом Python вы можете получать данные, очищая любую часть или элемент веб-страницы с максимальным контролем над процессом. В этой статье мы рассмотрим, как с помощью Beautiful Soup очистить веб-сайт.





Как установить Beautiful Soup и начать работу с ним

Прежде чем мы продолжим, в этой обучающей статье Beautiful Soup мы будем использовать Python 3 и beautifulsoup4 , последняя версия Beautiful Soup. Убедитесь, что вы создать виртуальную среду Python чтобы изолировать ваш проект и его пакеты от тех, что находятся на вашем локальном компьютере.





wpa psk tkip wpa2 psk aes

Для начала вы должны установить библиотеку Beautiful Soup в своей виртуальной среде. Beautiful Soup доступен в виде пакета PyPi для всех операционных систем, поэтому вы можете установить его с pip install beautifulsoup4 команду через терминал.

Однако, если вы используете Debian или Linux, указанная выше команда по-прежнему работает, но вы можете установить ее с помощью диспетчера пакетов, запустив apt-get установить python3-bs4 .



Beautiful Soup не очищает URL-адреса напрямую. Он работает только с готовыми файлами HTML или XML. Это означает, что вы не можете передать URL-адрес прямо в него. Чтобы решить эту проблему, вам необходимо получить URL-адрес целевого веб-сайта с помощью библиотеки запросов Python, прежде чем передавать его в Beautiful Soup.

Чтобы сделать эту библиотеку доступной для вашего парсера, запустите запросы на установку pip команду через терминал.





Чтобы использовать библиотеку синтаксического анализатора XML, запустите pip install lxml установить его.

Проверьте веб-страницу, которую хотите очистить

Прежде чем выполнять парсинг любого незнакомого вам веб-сайта, лучше всего проверить его элементы. Вы можете сделать это, переключив браузер в режим разработчика. Это довольно легко использовать Chrome DevTools если вы используете Google Chrome.





Однако необходимо проверить веб-страницу, чтобы узнать больше о ее HTML-тегах, атрибутах, классах и идентификаторах. Это открывает доступ к основным элементам веб-страницы и ее типам контента.

Это также поможет вам разработать лучшие стратегии, которые вы можете использовать, чтобы получить точные данные с веб-сайта и способы их получения.

Как очистить данные веб-сайтов с помощью Beautiful Soup

Теперь, когда у вас все готово, откройте предпочтительный редактор кода и создайте новый файл Python, присвоив ему выбранное имя. Однако вы также можете использовать веб-IDE, такие как Jupyter Notebook если вы не знакомы с запуском Python через командную строку.

Далее импортируем необходимые библиотеки:

from bs4 import BeautifulSoup
import requests

Для начала посмотрим, как работает библиотека запросов:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

Когда вы запускаете приведенный выше код, он возвращает статус 200, указывая на то, что ваш запрос успешен. В противном случае вы получите статус 400 или некоторые другие статусы ошибок, которые указывают на неудачный запрос GET.

Не забывайте всегда заменять URL-адрес веб-сайта в круглых скобках своим целевым URL-адресом.

Как только вы получите сайт с получать запроса, вы затем передаете его Beautiful Soup, который теперь может читать контент как файлы HTML или XML, используя свой встроенный анализатор XML или HTML, в зависимости от выбранного вами формата.

Взгляните на следующий фрагмент кода, чтобы узнать, как это сделать с помощью анализатора HTML:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

Приведенный выше код возвращает всю DOM веб-страницы с ее содержимым.

Вы также можете получить более согласованную версию модели DOM, используя украсить метод. Вы можете попробовать это, чтобы увидеть результат:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

Вы также можете получить чистое содержимое веб-страницы, не загружая ее элемент с помощью .текст метод:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

Как очистить содержимое веб-страницы по имени тега

Вы также можете очистить содержимое определенного тега с помощью Beautiful Soup. Для этого вам необходимо включить имя целевого тега в запрос парсера Beautiful Soup.

Например, давайте посмотрим, как вы можете получить контент в h2 теги веб-страницы.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

В приведенном выше фрагменте кода суп. h2 возвращает первый h2 элемент веб-страницы и игнорирует остальные. Чтобы загрузить все h2 элементы, вы можете использовать найти все встроенная функция и для цикл Python:

как заставить Google Play разжечь огонь
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

Этот блок кода возвращает все h2 элементы и их содержание. Однако вы можете получить контент, не загружая тег, используя .нить метод:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

Вы можете использовать этот метод для любого HTML-тега. Все, что вам нужно сделать, это заменить h2 пометьте тот, который вам нравится.

Однако вы также можете очистить другие теги, передав список тегов в найти все метод. Например, приведенный ниже блок кода очищает содержимое к , h2 , а также заглавие теги:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

Как очистить веб-страницу с помощью идентификатора и имени класса

После проверки веб-сайта с помощью DevTools он позволяет вам узнать больше об атрибутах id и class, содержащих каждый элемент в его DOM. Получив эту информацию, вы можете очистить эту веб-страницу с помощью этого метода. Это полезно, когда содержимое целевого компонента выходит из базы данных.

Вы можете использовать найти метод для парсеров идентификатора и класса. в отличие от найти все метод, который возвращает итерируемый объект, найти метод работает с одной не повторяющейся целью, которой является я бы в этом случае. Итак, вам не нужно использовать для петля с ним.

Давайте посмотрим на пример того, как вы можете очистить содержимое страницы ниже, используя идентификатор:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

Чтобы сделать это для имени класса, замените я бы с участием класс . Однако написание класс напрямую приводит к путанице синтаксиса, поскольку Python рассматривает его как ключевое слово. Чтобы обойти эту ошибку, вам нужно написать символ подчеркивания перед классом следующим образом: класс_ .

По сути, строка, содержащая идентификатор, становится:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

Однако вы также можете очистить веб-страницу, вызвав конкретное имя тега с его соответствующим идентификатором или классом:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

Как сделать многоразовый скребок с красивым супом

Вы можете создать класс и объединить весь предыдущий код в функцию этого класса, чтобы создать многоразовый скребок, который получает содержимое некоторых тегов и их идентификаторы. Мы можем сделать это, создав функцию, которая принимает пять аргументов: URL-адрес, два имени тега и их соответствующие идентификаторы или классы.

Предположим, вы хотите узнать цену на рубашки с веб-сайта электронной коммерции. В приведенном ниже примере класса скребка извлекаются теги цен и рубашек с соответствующими идентификаторами или классами, а затем они возвращаются в виде фрейма данных Pandas с «Price» и «Shirt_name» в качестве имен столбцов.

Убедитесь, что вы pip install pandas через терминал, если вы еще этого не сделали.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

Только что созданный парсер - это модуль многократного использования, который можно импортировать и использовать в другом файле Python. Чтобы позвонить в царапать функция из своего класса, вы используете scrapeit.scrape ('URL веб-сайта', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Если вы не укажете URL-адрес и другие параметры, еще заявление предлагает вам это сделать.

Чтобы использовать этот скейпер в другом файле Python, вы можете импортировать его следующим образом:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Примечание: scraper_module - это имя файла Python, содержащего класс парсера.

Вы также можете проверить Документация Beautiful Soup если вы хотите глубже погрузиться в то, как вы можете наилучшим образом использовать его.

Beautiful Soup - ценный инструмент для очистки веб-страниц

Beautiful Soup - это мощный скребок экрана Python, который позволяет вам контролировать, как ваши данные проходят через парсинг. Это ценный бизнес-инструмент, поскольку он может дать вам доступ к веб-данным конкурентов, таким как цены, тенденции рынка и многое другое.

о какой книге я думаю

Хотя в этой статье мы создали инструмент для очистки тегов, вы все равно можете поэкспериментировать с этой мощной библиотекой Python, чтобы создать более полезные инструменты для очистки.

Делиться Делиться Твитнуть Эл. адрес Лучшие онлайн-инструменты для парсинга

Вам нужно собрать данные с веб-сайтов для аналитических целей? Эти инструменты для парсинга упрощают задачу.

Читать далее
Похожие темы
  • Программирование
  • Python
Об авторе Идису Омисола(Опубликовано 94 статей)

Идову увлечен интеллектуальными технологиями и производительностью. В свободное время он играет с кодированием и переключается на шахматную доску, когда ему скучно, но он также любит время от времени отвлекаться от рутины. Его страсть показывать людям современные технологии побуждает его писать больше.

Ещё от Idowu Omisola

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться