Парсинг данных с веб-страниц в Python с помощью BeautifulSoup
Table Of Content
- 1- Установка библиотек **BeautifulSoup** и **requests** с помощью pip
- 2- Смотрите ниже код:
- Исходя из приведенного кода, я опишу каждую строку:
- Чтобы получить больше информации о парсинге с помощью BeautifulSoup, перейдите по этому документу:
- Некоторые полезные методы, связанные с получением результатов парсинга:
При выполнении задач по науке о данных часто возникает необходимость использовать данные, найденные в Интернете. Однако иногда данные, которые вам нужны, могут быть доступны только как часть веб-страницы. В таких случаях вам понадобится использовать технику, называемую парсингом веб-страниц, чтобы получить данные с веб-страницы в формате, с которым вы можете работать в своем анализе. Если вы хотите парсить данные с веб-страницы или, другими словами, извлекать данные с веб-страниц в Python, следуйте за мной примерно минуту:
1- Установка библиотек BeautifulSoup и requests с помощью pip
pip install beautifulsoup4
pip install requests
Библиотека beautifulsoup4 используется для преобразования страницы в виртуальное DOM-дерево, после чего мы можем выполнять запросы к нему с использованием различных параметров, таких как идентификаторы элементов, классы, теги и т. д.
Библиотека requests используется для выполнения HTTP-запросов и получения содержимого HTML-страницы с удаленного сервера.
Например, мы попытались получить количество недвижимости на сайте www.realestate.com для пригорода камба.
2- Смотрите ниже код:
response = requests.get(url="https://www.realestate.com.au/rent/in-{0}/list-1?includeSurrounding=false".format("kambah"))
raw_html = str(response.text)
soup = BeautifulSoup(raw_html, 'lxml')
result = soup.find("div", {"id": "resultsInfo"})
Исходя из приведенного кода, я опишу каждую строку:
1- **requests.get()
** выполняет запрос GET для получения всех данных с данной страницы.
2- **raw_html = response.text
** получает содержимое страницы в виде строки.
3- **BeautifulSoup(raw_html, ‘lxml’)**
передает raw_html в качестве первого параметра, а lxml в качестве второго параметра. Второй параметр необязателен, но целевая страница форматируется на основе него, и BeautifulSoup автоматически предлагает использовать этот параметр в конструкторе. По умолчанию мы используем 'html.parser' в качестве второго параметра. Наконец, BeautifulSoup преобразует HTML-строку в виртуальное DOM в памяти, на этом этапе мы можем выполнять запросы к этому DOM.
4- **soup.find("div", {"id": "resultsInfo"})
** выполняет запрос к виртуальному DOM для поиска div с идентификатором, равным resultsInfo, на целевой веб-странице. Теперь переменная result содержит найденный элемент, в противном случае она будет равна None:
<div id=”**resultsInfo**”>
Здесь находится абзац текста!</div>
Чтобы получить больше информации о парсинге с помощью BeautifulSoup, перейдите по этому документу:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Некоторые полезные методы, связанные с получением результатов парсинга:
1- Удаление тегов из результата, например, преобразование <tag>
тестовый текст</tag>
в тестовый текст
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', str(raw_html))
return cleantext
2- Найти наибольшее число в предложении
def findLargestNumber(text):
ls = list()
for w in text.split():
try:
ls.append(int(w))
except:
pass
try:
return max(ls)
except:
return None