Как выполнить поиск по URL-адресу на странице

StackOverflow https://stackoverflow.com/questions/665972

  •  21-08-2019
  •  | 
  •  

Вопрос

Я новичок в регулярных выражениях и тому подобных вещах.У меня очень мало знаний, и я думаю, что моя нынешняя проблема связана с ними.

У меня есть веб-страница, которая содержит текст.Я хочу получить ссылки с веб-страницы, которые находятся только в SPANы, которые имеют class="img".

Я прохожу через эти шаги.

  1. захватите все SPANs помечен классом "img" (это трудный шаг, который я ищу)
  2. переместите эти SPANs к новой переменной
  3. Проанализируйте переменную, чтобы получить массив со ссылками (каждая SPAN имеет только 1 ссылку, так что это будет несложно)

Я использую PHP, но любой другой язык не имеет значения, я смотрю, как справиться с первым шагом.У кого-нибудь есть предложение?Спасибо : D

Это было полезно?

Решение

Используйте PHPs DOMDocument ДОМДокумент- класс в сочетании с DOMXPath ( Доменный путь )-класс для перехода к нужным вам элементам, вот так:

<?php
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents('http://foo.bar'));
$xpath = new DOMXPath($dom);

$elements = $xpath->запрос("/html/body//span[@class='img']//a");foreach ($elements как $a) { echo $a-> Получить атрибут('href'), " ";}

Вы можете узнать больше о языке XPath на странице W3C.

Другие советы

Шаблон , подобный <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);

?>

Я использую 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, использующий Прекрасный суп - должно работать на большинстве доументов, хорошо сформированных или нет).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top