我正在开发一个解析优惠券网站并列出优惠券的网站。有些网站将其列表作为XML文件提供 - 没有问题。但也有一些网站不提供XML。我正在考虑解析他们的网站并从网站内容中获取优惠券信息 - 使用PHP从HTML中获取数据。例如,您可以看到以下网站:
我正在使用PHP。所以,我的问题是 - 是否有一种相对简单的方法来解析HTML并获取该网站上列出的每个优惠券的数据,就像我在解析XML时一样?
感谢您的帮助。
答案 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。 我希望这对你有用。