如何在页面上查找网址

时间:2009-03-20 12:41:32

标签: php url lookup

我是正则表达式和类似的东西的新手。我只有很少的知识,我认为我目前的问题是关于他们的。

我有一个包含文字的网页。我想从只有SPANclass="img"的网页中获取链接。

我会完成这些步骤。

  1. 抓住用“img”类标记的所有SPAN(这是我正在寻找的艰难步骤)
  2. 将这些SPAN移动到新变量
  3. 解析变量以获取包含链接的数组(每个SPAN只有1个链接,因此这很容易)
  4. 我正在使用PHP,但任何其他语言无关紧要,我正在寻找如何处理第一步。有人有建议吗? 谢谢:D

3 个答案:

答案 0 :(得分:12)

将PHP DOMDocument - 类与DOMXPath - 类结合使用,以导航到您需要的元素,如下所示:

<?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"; }

You can learn more about the XPath Language on the W3C page.

答案 1 :(得分:1)

<span.* class="img".*>([^<]*)</span>这样的模式应该可以正常工作。假设您的代码看起来像

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

?>

答案 2 :(得分:1)

  

我正在使用PHP,但使用其他任何语言   无所谓,我正在寻找如何   处理第一步。任何人都有   一个建议?

我们-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']

(那是python,使用BeautifulSoup - 应该适用于大多数douments,格式良好或没有。)