我在一个网站上工作,它解析优惠券网站,并列出这些优惠券。有一些网站将它们的列表以XML文件的形式提供--这没有问题。但是也有一些站点不提供XML。我正在考虑解析他们的网站,从网站内容中获取优惠券信息--用PHP从HTML中抓取数据。例如,您可以看到以下站点:
我正在使用PHP。所以,我的问题是-有没有一种相对简单的方法来解析HTML并获得该站点上列出的每个优惠券的数据,就像我在解析XML时得到的那样?
谢谢你的帮助。
发布于 2011-12-18 02:53:31
您总是可以使用DOM parser,但从站点抓取内容充其量也是不可靠的。
如果他们的布局稍微改变一下,你的应用程序可能会失败。哦,而且在大多数情况下,这样做也不利于大多数网站。
发布于 2011-12-18 03:02:48
虽然使用DOM解析器似乎是个好主意,但我通常更喜欢使用优秀的旧正则表达式进行抓取。这项工作要少得多,而且如果网站改变了它的布局,不管你的方法是什么,你都要完蛋了。但是,如果使用足够智能的正则表达式,您的代码应该对不会直接影响您感兴趣的部分的更改具有免疫力。
要记住的一件事是,在regex中包含一些提供的类名,但要假设任何信息都可以在您需要的信息之间。例如。
preg_match_all('#class="actionsItemHeadding".*?<a[^>]*href="([^"]*)"[^>]*>(.*?)</a>#s', file_get_contents('http://www.biglion.ru/moscow/'), $matches, PREG_SET_ORDER);
print_r($matches);发布于 2014-03-31 23:02:08
如果您喜欢使用php,那么最可靠的方法就是Php DOM解析器。下面是一个仅解析元素的示例。
// 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。我希望这会对你有所帮助。
https://stackoverflow.com/questions/8547103
复制相似问题