2

私は正規表現などに不慣れです。私は知識がほとんどなく、現在の問題はそれらに関するものだと思います。

テキストを含む Web ページがあります。SPANを持つ sのみにある Web ページからリンクを取得したいclass="img"

私はそれらのステップを経ます。

  1. 「img」クラスでタグ付けされたすべての を取得しますSPAN(これは私が探している難しいステップです)
  2. それらSPANを新しい変数に移動します
  3. 変数を解析して、リンクを含む配列を取得します (それぞれSPANに 1 つのリンクしかないため、これは簡単です)

私はPHPを使用していますが、他の言語は関係ありません。最初のステップに対処する方法を探しています。誰にも提案がありますか?ありがとう

4

3 に答える 3

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

XPath 言語の詳細については、W3C ページを参照してください。

于 2009-03-20T12:49:20.860 に答える
1

私はPHPを使用していますが、他の言語は関係ありません。最初のステップに対処する方法を探しています。誰にも提案がありますか?

私たちは...

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を使用しています-整形式かどうかにかかわらず、ほとんどのドキュメントで動作するはずです)。

于 2009-03-20T14:20:22.127 に答える