Анализ веб-страницы означает понимание ее структуры. Теперь возникает вопрос, почему это важно для очистки веб-страниц? В этой главе давайте разберемся в этом подробно.
Анализ веб-страницы
Анализ веб-страниц важен, потому что без анализа мы не можем знать, в какой форме мы собираемся получать данные (структурированные или неструктурированные) с этой веб-страницы после извлечения. Мы можем сделать анализ веб-страницы следующими способами —
Просмотр страницы источника
Это способ понять, как структурирована веб-страница, путем изучения ее исходного кода. Чтобы реализовать это, нам нужно щелкнуть правой кнопкой мыши страницу и затем выбрать опцию View page source . Затем мы получим интересующие нас данные с этой веб-страницы в форме HTML. Но основная проблема связана с пробелами и форматированием, которые нам сложно отформатировать.
Проверка источника страницы, нажав кнопку «Проверить элемент»
Это еще один способ анализа веб-страницы. Но разница в том, что это решит проблему форматирования и пробелов в исходном коде веб-страницы. Это можно сделать, щелкнув правой кнопкой мыши и выбрав в меню параметр « Проверка» или « Проверка элемента» . Он предоставит информацию о конкретной области или элементе этой веб-страницы.
Различные способы извлечения данных из веб-страницы
Следующие методы в основном используются для извлечения данных с веб-страницы —
Регулярное выражение
Это узкоспециализированный язык программирования, встроенный в Python. Мы можем использовать его через модуль Python. Это также называется RE или регулярными выражениями или шаблонами регулярных выражений. С помощью регулярных выражений мы можем указать некоторые правила для возможного набора строк, которые мы хотим сопоставить из данных.
Если вы хотите узнать больше о регулярных выражениях в целом, перейдите по ссылке https://www.tutorialspoint.com/automata_theory/regular_expressions.htm и если вы хотите узнать больше о модуле re или регулярном выражении в Python, вы можете следовать ссылка https://www.tutorialspoint.com/python/python_reg_expressions.htm .
пример
В следующем примере мы собираем данные об Индии с http://example.webscraping.com после сопоставления содержимого <td> с помощью регулярного выражения.
import re import urllib.request response = urllib.request.urlopen('http://example.webscraping.com/places/default/view/India-102') html = response.read() text = html.decode() re.findall('<td class="w2p_fw">(.*?)</td>',text)
Выход
Соответствующий вывод будет таким, как показано здесь —
[ '<img src="/places/static/images/flags/in.png" />', '3,287,590 square kilometres', '1,173,108,018', 'IN', 'India', 'New Delhi', '<a href="/places/default/continent/AS">AS</a>', '.in', 'INR', 'Rupee', '91', '######', '^(\\d{6})$', 'enIN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc', '<div> <a href="/places/default/iso/CN">CN </a> <a href="/places/default/iso/NP">NP </a> <a href="/places/default/iso/MM">MM </a> <a href="/places/default/iso/BT">BT </a> <a href="/places/default/iso/PK">PK </a> <a href="/places/default/iso/BD">BD </a> </div>' ]
Заметьте, что в приведенном выше выводе вы можете увидеть подробности о стране Индия с помощью регулярного выражения.
Красивый суп
Предположим, что мы хотим собрать все гиперссылки с веб-страницы, затем мы можем использовать синтаксический анализатор BeautifulSoup, который можно узнать более подробно по адресу https://www.crummy.com/software/BeautifulSoup/bs4/doc/. Проще говоря, BeautifulSoup — это библиотека Python для извлечения данных из файлов HTML и XML. Его можно использовать с запросами, потому что для создания объекта-супруга нужен вход (документ или URL), так как он не может самостоятельно получить веб-страницу. Вы можете использовать следующий скрипт Python, чтобы собрать заголовок веб-страницы и гиперссылки.
Установка красивого супа
Используя команду pip , мы можем установить beautifulsoup либо в нашей виртуальной среде, либо в глобальной установке.
(base) D:\ProgramData>pip install bs4 Collecting bs4 Downloading https://files.pythonhosted.org/packages/10/ed/7e8b97591f6f456174139ec089c769f89 a94a1a4025fe967691de971f314/bs4-0.0.1.tar.gz Requirement already satisfied: beautifulsoup4 in d:\programdata\lib\sitepackages (from bs4) (4.6.0) Building wheels for collected packages: bs4 Running setup.py bdist_wheel for bs4 ... done Stored in directory: C:\Users\gaurav\AppData\Local\pip\Cache\wheels\a0\b0\b2\4f80b9456b87abedbc0bf2d 52235414c3467d8889be38dd472 Successfully built bs4 Installing collected packages: bs4 Successfully installed bs4-0.0.1
пример
Обратите внимание, что в этом примере мы расширяем приведенный выше пример, реализованный с помощью модуля python запросов. мы используем r.text для создания супового объекта, который в дальнейшем будет использоваться для получения таких деталей, как заголовок веб-страницы.
Во-первых, нам нужно импортировать необходимые модули Python —
import requests from bs4 import BeautifulSoup
В этой следующей строке кода мы используем запросы, чтобы сделать HTTP-запросы GET для URL: https://authoraditiagarwal.com/ , сделав запрос GET.
r = requests.get(' https://authoraditiagarwal.com/ ')
Теперь нам нужно создать объект Soup следующим образом:
soup = BeautifulSoup(r.text, 'lxml') print (soup.title) print (soup.title.text)
Выход
Соответствующий вывод будет таким, как показано здесь —
<title>Learn and Grow with Aditi Agarwal</title> Learn and Grow with Aditi Agarwal
LXML
Еще одна библиотека Python, которую мы собираемся обсудить для поиска в сети, — это lxml. Это высокопроизводительная библиотека для разбора HTML и XML. Это сравнительно быстро и просто. Вы можете прочитать об этом подробнее на https://lxml.de/.
Установка lxml
Используя команду pip, мы можем установить lxml либо в нашей виртуальной среде, либо в глобальной установке.
(base) D:\ProgramData>pip install lxml Collecting lxml Downloading https://files.pythonhosted.org/packages/b9/55/bcc78c70e8ba30f51b5495eb0e 3e949aa06e4a2de55b3de53dc9fa9653fa/lxml-4.2.5-cp36-cp36m-win_amd64.whl (3. 6MB) 100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 3.6MB 64kB/s Installing collected packages: lxml Successfully installed lxml-4.2.5
Пример: извлечение данных с использованием lxml и запросов
В следующем примере мы очищаем определенный элемент веб-страницы от authoraditiagarwal.com с помощью lxml и запросов —
Во-первых, нам нужно импортировать запросы и HTML из библиотеки lxml следующим образом:
import requests from lxml import html
Теперь нам нужно предоставить URL веб-страницы для удаления
url = 'https://authoraditiagarwal.com/leadershipmanagement/'
Теперь нам нужно указать путь (Xpath) к конкретному элементу этой веб-страницы —
path = '//*[@id="panel-836-0-0-1"]/div/div/p[1]' response = requests.get(url) byte_string = response.content source_code = html.fromstring(byte_string) tree = source_code.xpath(path) print(tree[0].text_content())
Выход
Соответствующий вывод будет таким, как показано здесь —