Como a pesquisa de uma URL em uma página
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 SPAN
s que têm class="img"
.
I passar por essas etapas.
- pegar todos os
SPAN
s marcados com a classe "img" (este é o passo mais difícil que eu estou procurando) - mover essas
SPAN
s a uma nova variável - 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
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";
}
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).