Как стать автором
Обновить

Парсер ссылок средствами Beautifulsoup

Статья будет простая и для кого то будет из разряда "как нарисовать сову", но для меня это неважно, ибо материал все равно кому-нибудь пригодится.

Речь пойдет о библиотеке Beautfulsoup и в качестве искомых данных будут URL адреса на ссылки, которые на языке HTML размечаются как ссылка, для этого будем ловить значения тега и следующего за ним атрибута href.

Импортируем библиотеку requests:

import requests

и библиотеку bs4, откуда вызываем объект супа:

from bs4 import BeautifulSoup

получаем контент с сайта:

url = 'https://yandex.ru/'
r = requests.get(url)
soup_ing = str(BeautifulSoup(r.content, 'lxml'))

предварительно кодируем переменную soup_ing:

soup_ing = soup_ing.encode()

сохраняем контент в файл test.html:

with open("test.html", "wb") as file:
    file.write(soup_ing)

создаем метод fromSoup, который будет искать ссылки и
открываем сохраненный файл:

def fromSoup():
    html_file = ("test.html")
    html_file = open(html_file, encoding='UTF-8').read()
    soup = BeautifulSoup(html_file, 'lxml')

создаем объект soup, чтобы передать ему содержание файла:

soup = BeautifulSoup(html_file, 'lxml')

объявляем что поиск пройдет по всем тегам a:

for link in soup.find_all('a'):

ссылаясь на атрибут href:

print(link.get('href'))

и выводя содержимое в виде ссылок:

fromSoup()

весь код:

import requests
from bs4 import BeautifulSoup

url = 'https://yandex.ru/'
r = requests.get(url)
soup_ing = str(BeautifulSoup(r.content, 'lxml'))
soup_ing = soup_ing.encode() 
with open("test.html", "wb") as file: 
    file.write(soup_ing)

def fromSoup():
    html_file = ("test.html")
    html_file = open(html_file, encoding='UTF-8').read()
    soup = BeautifulSoup(html_file, 'lxml') # name of our soup

    for link in soup.find_all('a'):
        print(link.get('href'))    

fromSoup()
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.