我是正则表达式和类似的东西的新手。我只有很少的知识,我认为我目前的问题是关于他们的。
我有一个包含文字的网页。我想从只有SPAN
个class="img"
的网页中获取链接。
我会完成这些步骤。
SPAN
(这是我正在寻找的艰难步骤)SPAN
移动到新变量SPAN
只有1个链接,因此这很容易)我正在使用PHP,但任何其他语言无关紧要,我正在寻找如何处理第一步。有人有建议吗? 谢谢:D
答案 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,格式良好或没有。)