使用PHP解析HTML以获取同类文章的数据

时间:2011-12-17 18:48:10

标签: php parsing dom

我正在开发一个解析优惠券网站并列出优惠券的网站。有些网站将其列表作为XML文件提供 - 没有问题。但也有一些网站不提供XML。我正在考虑解析他们的网站并从网站内容中获取优惠券信息 - 使用PHP从HTML中获取数据。例如,您可以看到以下网站:

http://www.biglion.ru/moscow/

我正在使用PHP。所以,我的问题是 - 是否有一种相对简单的方法来解析HTML并获取该网站上列出的每个优惠券的数据,就像我在解析XML时一样?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您始终可以使用DOM parser,但抓取网站上的内容充其量是不可靠的。

如果他们的布局稍微改变,那么您的应用可能会失败。哦,在大多数情况下,它也反对大多数网站TOS这样做..

答案 1 :(得分:0)

虽然使用DOM解析器似乎是一个好主意,但我通常更喜欢好的旧正则表达式来进行抓取。它的工作要少得多,如果网站改变了它的布局,无论你采用什么方法,你都会被搞砸。但是,如果使用足够聪明的正则表达式,您的代码应该不受那些不会直接影响您感兴趣的部分的更改的影响。

要记住的一件事是在提供时在正则表达式中包含一些类名,但假设任何内容都可以在您需要的信息之间。 E.g。

preg_match_all('#class="actionsItemHeadding".*?<a[^>]*href="([^"]*)"[^>]*>(.*?)</a>#s', file_get_contents('http://www.biglion.ru/moscow/'), $matches, PREG_SET_ORDER);
print_r($matches);

答案 2 :(得分:0)

如果您更喜欢使用php,最可靠的方法是Php DOM Parser。 以下是仅解析元素的示例。

// Include the library
include('simple_html_dom.php');


// Retrieve the DOM from a given URL
$html = file_get_html('http://mypage.com/');
// Find all "A" tags and print their HREFs
foreach($html->find('a') as $e) 
echo $e->href . '<br>';

我正在提供有关解析其他html元素的some more information。 我希望这对你有用。