Изображение Alfons Schüler от Pixabay.
Первоначально опубликовано: https://icodeMag.com/web-scraping-for-data-scientists-with-noveb-programming-background/
В настоящее время данные имеют очень важную роль в отрасли, и необходимость получения этих данных становится все более высокой. Большая часть этой информации может быть получена через Интернет. Некоторые данные выражены, например, поскольку комментарии или Hashtags в социальных сетях другие могут быть найдены как простой тексты на веб-страницах и других могут быть таблицами на «старых» веб-сайтах, не более формата, чем простой HTML.
Но независимо от формата, то, что мы действительно заботимся, это информация, которую мы можем получить из этого источника, информация, которую мы можем анализировать, чтобы узнать о нашем клиенте, например или увеличить объем данных в нашей базе данных для дальнейшего использования. Иногда сайты предоставляют нам информацию с помощью APIS или, делая доступные документы, которые мы можем легко скачать, но иногда нет другого способа получить его, чем путем проверки и копирования этой информации непосредственно с веб-сайта.
До сих пор все счастье, но что происходит, когда информация, которую нам нужно получить, распространяется на сотнях или тысячах разных страниц или маршрутов, а также все грязно. Вот и время автоматизации проверки и добычи данных приходит на сцену!
Веб-соскоб
В основном Scraping – это техника для захвата данных с веб-сайта и хранить его в машину.
Мы могли бы получить весь код веб-страницы с помощью запроса на получение, а затем вручную проверять, заказывать и хранить его в базе данных, но Python предоставляет нам некоторые полезные решения, чтобы облегчить. Одним из этих вариантов является веб-каркас для ползания Соскребация . Одним из основных преимуществ является то, что он был построен на вершине Скрученный что делает его асинхронным и быстрее. В другой руке у нас есть Красивый суп Его название исходит из выражения «тег супа», который описывает грязную и неструктурированный HTML. Мы будем пользоваться этой библиотекой, так как она очень удобна, а также много помогает, когда сайт, который мы пытаемся царапать, – это настоящий беспорядок (который много случаев).
Красивый суп Можно получить весь HTML-код страницы и хранить его в качестве объекта проще, чтобы фильтровать по тегам, идентификатору и DOM.
Но сначала вы можете не знать, что такое DOM, поэтому давайте начнем с базового класса HTML.
Дом – это W3C (World Wide Web Consortium) стандартный В основном это модель объекта документа, которая может определить свойства, методы и события HTML-элемента. Так что дом выглядит так:
Как сказано ранее, на DOM мы можем иметь свойства, такие как ID , а класс или href И действительно базовая HTML-страница выглядела так:
Finding HTML Elements by Tag Name
The DOM is very useful.
This example demonstrates the getElementsByTagName method.
demo
Дом очень полезен. Так что для этой HTML-страницы теги или свойства будут:
- я бы
- сорт
И наши дома были бы:
- HTML
- тело
- H2.
- девочка
- p
- b
Комбинация этих DOM и его назначенных свойств будет тем, что сделает наши поиски проще.
Если вы хотите узнать немного больше о HTML, вы можете найти много информации о W3Schools Веб-сайт.
Теперь мы готовы кодировать!
Сначала нам нужно установить Красивый суп Библиотека и библиотека HTTP-запросов в этом случае пользуется URLIB3. :
pip install bs4 pip install urllib3
Например, мы собираемся использовать следующий сайт для Scrape:
** страница \ _URL **
Прежде чем начать делать запросы на веб-страницу, мы собираемся вручную перейти к root сайта и искать Robots.txt ( https://example.webscraping.com/robots.txt ).
Robots.txt Является ли файлом, который должен иметь каждый сайт, чтобы позволить ботам знать, какие страницы разрешено проверять и которые нет. Также он может указать, сколько запросов в секунду сканет может сделать на сайте. Это этично следовать этим инструкциям и не ударить излишне сервер при сочетании его.
Первое, что нам нужно, это получить весь исходный код страницы. Рекомендуется получить все это в одном запросе, закройте соединение, а затем повторяйте несколько раз, если необходимо найти информацию, которую мы ищем. Это не только быстрее, но и лучше для сервера, который мы соскабливаем.
from bs4 import BeautifulSoup import urlib3 http = urllib3.PoolManager() #instanciate the http requests library response = http.request('GET', page\_url) #make the request to the page soup = BeautifulSoup(response.data, 'html.parser') #store the code as a soup object
Этот суп объект имеет все HTML-код страницы, поэтому давайте попробуем выполнить несколько поисков. Чтобы узнать, что искать, мы можем сделать динамический инспекцию на странице, делая щелчок правой кнопкой мыши, а затем выберите « Осмотрите элемент ». Почти все веб-браузеры имеют эту опцию. Там мы можем видеть, что весь блок HTML-кода, содержащий первые страны, имеет класс тегов под названием SPAN12 Теперь заявив, что к нашему коду у нас есть:
dom_name = "div" tag_name = "class" tag_value = "span12" span12_object_array = soup.find_all(dom_name, attrs={tag_name: tag_value})
Этот код вернет массив, содержащий все Равс найдено с SPAN12 Класс и все детские домосы внутри него, которые визуально будут флагами и именами стран.
Если мы хотим получить ссылку изображений флагов, мы можем применить следующий поиск для нашего уже отфильтрованного « DIV Span12 » Array:
img_dom_name = "img" img_attr_name = "src" for div_item in span12_object_array: img_object_array = div_item.find_all(img_dom_name) img_src_array = [current_item.get(img_attr_name) for current_item in img_object_array] #This is a list comprehension to simply get each found image source url in order
Теперь мы можем распечатать это, чтобы увидеть, что такое каждая ссылка изображения:
print(img_src_array)
Наконец, вы можете хранить информацию в базе данных или напрямую загрузить изображения.
Понимание
Хорошо сделанный соскоб не вызывает проблеме для сервера, который хранит необходимую информацию, это важно главным образом по этическим причинам. В той же линии мы можем оптимизировать наш код, чтобы выполнить более быструю работу локально и просить разную информацию в будущем с небольшими изменениями.
Также эффективный и многоразовый код будет легче поддерживать и минимизировать наше кодовое время в будущем.
Это основной подход к методам соскабливания, после понимания этого было бы легче просмотреть любой сайт, даже если мы находим немного грязным и не заказанным HTML-код, содержащим информацию.
Первоначально опубликовано: https://icodeMag.com/web-scraping-for-data-scientists-with-noveb-programming-background/
Оригинал: “https://dev.to/valerybriz/web-scraping-for-data-scientists-with-no-web-programming-background-1j3a”