Парсинг сайта с помощью ehp

143
26 февраля 2021, 13:10

Как запарсить html с помощью библиотеки ehp,

Например:

<div class='firstdiv>
<a href='https://ссылка.ru'>
</div>

Чтобы вывести именно https://ссылка.ru ?

Answer 1

Отличным решением будет использовать специальный инструмент для этого, а именно bs4.

Для установки введите в терминале (или консоле):

pip install beautifulsoup4

Пример:

from bs4 import BeautifulSoup

html = """
<div class="firstdiv">
    <a href="https://ссылка.ru">
</div>
"""
bs = BeautifulSoup(html, 'html.parser')
elms = bs.select('div.firstdiv a')
for x in elms:
    print(x.attrs['href'])

stdout:

https://ссылка.ru

P. S.:
Ваш HTML не валиден. Вы забыли закрыть скобку у класса в div. Я поправил это. Также для наглядности сделал отступ.

Answer 2

Не знаком с библиотекой ehp (написал код с помощью selenium, возможно натолкнет на какие-нибудь мысли с использованием ehp)

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver import Chrome
from selenium.common.exceptions import NoSuchElementException
browser = Chrome(ChromeDriverManager().install())
browser.maximize_window() 
url = 'ссылка на сайт'
while browser.current_url != url:
    browser.get(url)
while True:
    try:
        element = browser.find_element_by_xpath("//div[@class='firstdiv']")
        info = str(browser.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', element))
    except NoSuchElementException:
        continue
    else:
        break
print(info)

Этот код выведет всю информацию об element. Если необходима информация о конкретном атрибуте, то можно воспользоваться методом get_attribute('атрибут элемента')

Надеюсь хоть немного помог :)

READ ALSO
route и параметры

route и параметры

У меня имеется метод который принимает 3 параметра

91
C# использование сторонних классов в проекте

C# использование сторонних классов в проекте

Нужно написать небольшой функционал по работе с жестким дискомСама суть программы не важна

121
Не задаётся временная директория

Не задаётся временная директория

К проекту на laravel 56 подключён пакет MPDF

131