Рубрики
Без рубрики

Веб соскоб для данных ученых (без веб-программирования фона)

Изображение Alfons Schüler от Pixabay, первоначально опубликованную по адресу: https: //icodeMag.com/web-scraping-for-dat … с меткой Python, DatasCity, Datamining, Scraping.

Изображение 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”