Pergunta

Eu sou novo para expressões regulares e coisas assim. Eu só tenho alguns conhecimentos e acho que meu problema atual é sobre eles.

Eu tenho uma página web, que contém o texto. Eu quero ficar links da página da Web que estão apenas em SPANs que têm class="img".

I passar por essas etapas.

  1. pegar todos os SPANs marcados com a classe "img" (este é o passo mais difícil que eu estou procurando)
  2. mover essas SPANs a uma nova variável
  3. Parse a variável para obter uma matriz com os links (Cada SPAN tem apenas 1 link, então isso vai ser fácil)

Eu estou usando PHP, mas qualquer outra língua não importa, eu estou procurando a forma de lidar com o primeiro passo. Qualquer um tem uma sugestão? Graças: D

Foi útil?

Solução

Use do PHP DOMDocument de classe em combinação com o DOMXPath de classe para navegar para os elementos que você precisa, como este:

<?php
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents('http://foo.bar'));
$xpath = new DOMXPath($dom);

$elements = $xpath->query("/html/body//span[@class='img']//a"); foreach ($elements as $a) { echo $a->getAttribute('href'), "\n"; }

Você pode aprender mais sobre o XPath Idioma na página W3C.

Outras dicas

Um padrão como <span.* class="img".*>([^<]*)</span> deve funcionar bem., Assumindo que o seu código é algo como

<span class="img">http://www.img.com/img.jpg</span>
<span alt="yada" class="img">animage.png</span>
<span alt="yada" class="img" title="still works">link.txt</span>
<span>not an img class</span>


<?php

$pattern = '@<span.* class="img".*>([^<]*)</span>@i';

//$subject = html code above

preg_match_all($pattern, $subject, $matches);

print_r($matches);

?>

Eu estou usando PHP, mas qualquer outra língua Não importa, eu estou procurando como lidar com o primeiro passo. Qualquer um tem uma sugestão?

-e-ell ...

import urllib
from BeautifulSoup import BeautifulSoup, SoupStrainer

html = urllib.urlopen(url).read()
sieve = SoupStrainer(name='span', attrs={'class': 'img'})
tag_soup = BeautifulSoup(html, parseOnlyThese=sieve)
for link in tag_soup('a'):
    print link['href']

(que de python, usando BeautifulSoup - deve funcionar na maioria dos douments, bem-formado ou não).

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