Pull to refresh

Парсер ссылок средствами 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()
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.