Вопрос

На самом деле это не парсинг, я просто пытаюсь найти URL-адреса на веб-странице, где класс имеет определенное значение.Например:

<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">

Я хочу получить значение href.Есть идеи, как это сделать?Может быть, регулярное выражение?Не могли бы вы опубликовать пример кода?Я предполагаю, что библиотеки для очистки HTML, такие как BeautifulSoup, немного излишни только для этого...

Огромное спасибо!

Это было полезно?

Решение

Regex обычно плохая идея, попробуйте использовать КрасиваяСуп

Быстрый пример:

html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
    #process link

Другие советы

Аааа, нет регулярное выражение для анализа HTML!

К счастью, в Python у нас есть КрасиваяСуп или lxml сделать эту работу за нас.

Regex будет плохим выбором.HTML не является обычным языком.Как насчет Красивый суп?

Regex не следует использовать для анализа HTML.Видеть первый ответ на этот вопрос за объяснение :)

+1 за BeautifulSoup.

Если ваша задача настолько проста, просто используйте манипуляции со строками (даже без регулярных выражений)

f=open("htmlfile")
for line in f:
    if "<a class" in line and "myClass" in line and "href" in line:
        s = line [ line.index("href") + len('href="') : ]
        print s[:s.index('">')]
f.close()

HTML-парсеры в таких случаях не обязательны.

Дело в том, что я знаю структуру HTML-страницы и просто хочу найти ссылки определенного типа (где class="myclass").В любом случае, BeautifulSoup?

прочитать Разбор HTML по пути Ктулху https://blog.codinghorror.com/parsing-html-the-cthulhu-way/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top