Frage

Ich bin neu in reguläre Ausdrücke und solche Dinge. Ich habe nur wenige Kenntnisse und ich denke, mein aktuelles Problem an sie ist.

Ich habe eine Webseite, die Text enthält. Ich möchte von der Webseite Links erhalten, die nur in SPANs sind die class="img" haben.

Ich gehe durch diese Schritte.

  1. greift alle SPANs mit der „img“ Klasse markiert (das ist der harte Schritt, den ich suche)
  2. diese SPANs auf eine neue Variable
  3. bewegen
  4. die Variable Parst einen Array mit den Links zu erhalten (Jeder SPAN nur 1 Link hat, so wird dies leicht)

Ich bin mit PHP, aber auch jede andere Sprache spielt keine Rolle, ich bin auf der Suche, wie man mit dem ersten Schritt zu tun. Jeder einen Vorschlag? Danke: D

War es hilfreich?

Lösung

Verwenden Sie PHPs DOMDocument -Klasse in Kombination mit der DOMXPath -Klasse zu den Elementen navigieren Sie benötigen, wie folgt aus:

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

Sie können mehr über die XPath Sprache auf der W3C-Seite erfahren.

Andere Tipps

Ein Muster wie <span.* class="img".*>([^<]*)</span> sollte funktionieren. Ihren Code unter der Annahme, so etwas wie

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

?>
  

Ich bin mit PHP, aber auch jede andere Sprache   spielt keine Rolle, ich bin auf der Suche, wie man   befassen sich mit dem ersten Schritt. Jedes haben   ein Vorschlag?

Wir-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']

(das ist Python, mit BeautifulSoup - sollte auf den meisten douments arbeiten, wohlgeformt oder nein).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top