Pergunta

Não é realmente uma tarefa difícil, estou apenas tentando encontrar os URLs em uma página da web onde a classe tem um valor específico.Por exemplo:

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

Eu quero obter o valor href.Algumas ideias em como fazer isso?Talvez regex?Você poderia postar algum código de exemplo?Suponho que bibliotecas de raspagem de HTML, como BeautifulSoup, sejam um pouco exageradas só para isso ...

Muito obrigado!

Foi útil?

Solução

Regex geralmente é uma má ideia, tente usar LindaSopa

Exemplo rápido:

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

Outras dicas

Argh, não regex para analisar HTML!

Felizmente em Python temos LindaSopa ou lxml para fazer esse trabalho para nós.

Regex seria uma má escolha.HTML não é uma linguagem regular.Que tal Sopa Linda?

Regex não deve ser usado para analisar HTML.Ver a primeira resposta a esta pergunta para uma explicação :)

+1 para BeautifulSoup.

Se sua tarefa for simples assim, basta usar a manipulação de strings (sem sequer regex)

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()

Os analisadores HTML não são obrigatórios para tais casos.

O problema é que conheço a estrutura da página HTML e só quero encontrar esse tipo específico de link (onde class = "myclass").LindaSopa, afinal?

leia Analisando HTML à maneira de Cthulhu https://blog.codinghorror.com/parsing-html-the-cthulhu-way/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top