如何解决将Xpaths应用于PHP :: Libxml-如何做到这一点?
| 我想用PHP DOM-Document方式解析站点:请注意,它更快更容易使用。你们中有些人说服了我!一个问题-由于我是PHP-newbie ;-)我可以应用XPaths代码吗? 示例:http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db.htm 目标:还要获取结果(大约213个不同的记录)并解析它们,以获得数据库转储,以保存在本地MysqL-Db !!上。 顺便说一句:看到两个结果页: http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db_20302.htm http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db_20289.htm 您会看到存储了很多信息... 好吧,我曾尝试用Perl写刮板-但是我没有运气。 Perl非常适合新手。之后,我厌倦了用PHP编写解析器-这有点容易。但是该站点(请参阅详细结果页面)有点复杂。如何解析它们-为了获得基于本地MysqL数据库的数据集。然后,我有更多的检索机会。 我想获取数据以使其在MysqL数据库中位于本地(在我的OpenSuse Linux System版本11.3上)。 好吧:我分为三个部分: 正在取得 解析 存储(在MysqL中:正在创建MysqL转储) 由于我对XPath的经验很少,因此我的Mozilla浏览器中有一个Xpather-Tool。但是我不确定如何应用它们-请参阅下面收集的数据: 也许有些人可以在这里为我提供帮助-并向我展示如何在解析器代码中应用它们: 我很高兴收到你的来信 看到这里一些细节: 结果(来自大约213个不同的记录)-请参见两个结果页:-收集了一些Xpath数据: 例如:BürgerstiftungWiesloch http://buergerstiftungen.de/cps/rde/xchg/SID-A7DCD0D1-702CE0FA/buergerstiftungen/hs.xsl/db_20289.htm / html / body / div [@id = \'main \'] / div [@id = \'wrapper \'] / div [@id = \'inner \'] / div [@id = \'marginalblock \ '] / div [1] / p 1.Gründungsgeschichte / html / body / div [@id = \'main \'] / div [@id = \'wrapper \'] / div [@id = \'inner \'] / div [@id = \'contentblock \ '] / div / p [1] / strong 2. Kurzvorstellung / Ziele / html / body / div [@id = \'main \'] / div [@id = \'wrapper \'] / div [@id = \'inner \'] / div [@id = \'contentblock \ '] / div / p [2] / span [2] / span / b 3. Projekte / html / body / div [@id = \'main \'] / div [@id = \'wrapper \'] / div [@id = \'inner \'] / div [@id = \'contentblock \ '] / div / p [3] / span [2] / span / strong Kontakt: / html / body / div [@id = \'main \'] / div [@id = \'wrapper \'] / div [@id = \'inner \'] / div [@id = \'marginalblock \ '] / div [1] / h6 问:好吧,如何在Libxml中应用获得的数据-以便启动并运行PARSER-Part!我是XPath入门者! 期待着听到您的意见! 零 PS-如果我必须添加更多信息-或者如果我必须更适当地询问-请让我知道!很抱歉成为新手!;-) PPS-和更新:我有MysqL部分:它看起来像这样:CREATE TABLE IF NOT EXISTS `address` (
`id` int(4) NOT NULL auto_increment,`name` varchar(30) default NULL,`contact-details` varchar(30) default NULL,`street` varchar(30) default NULL,`postal-code` varchar(30) default NULL,`town` varchar(30) default NULL,`phone` varchar(30) default NULL,`email` varchar(30) default NULL,`homepage` varchar(30) default NULL,`summary` varchar(30) default NULL,`projects` varchar(30) default NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
这样的东西会适合需要。
更新;非常感谢Lenzai的快速解答:
您建议尝试这样的事情:
$url=\"http://...\";
$xpath_query=\"/html/body/...\";
/html/body/div[@id=\'main\']/div[@id=\'wrapper\']/div[@id=\'inner\']/div[@id=\'marginalblock\']/div[1]/p
/html/body/div[@id=\'main\']/div[@id=\'wrapper\']/div[@id=\'inner\']/div[@id=\'contentblock\']/div/p[1]/strong
/html/body/div[@id=\'main\']/div[@id=\'wrapper\']/div[@id=\'inner\']/div[@id=\'contentblock\']/div/p[2]/span[2]/span/b
/html/body/div[@id=\'main\']/div[@id=\'wrapper\']/div[@id=\'inner\']/div[@id=\'contentblock\']/div/p[3]/span[2]/span/strong
/html/body/div[@id=\'main\']/div[@id=\'wrapper\']/div[@id=\'inner\']/div[@id=\'marginalblock\']/div[1]/h6
$ch=curl_init($url);
$res=curl_exec($ch);
$dom = new DOMDocument()
$dom->loadHTML($res);
$xpath=new DomXPath($dom);
$node= $xpath->query($xpath_query)->item(0);
echo $node->nodeValue;
我在这里启用了Curl。没问题我应该输入的Xpath
在这一行:$ xpath_query = \“ / html / body / ... \”;
问题:我应该输入上面提到的所有Xpaths ..从1.到3 ...等等最终的效果如何?您对我很有帮助吗-我对PHP很陌生?
期待着听到您的意见!!非常感谢您的所有帮助!
零
解决方法
尝试这样的事情
$url=\"http://...\";
$xpath_query=\"/html/body/...\";
$ch=curl_init($url);
$res=curl_exec($ch);
$dom = new DOMDocument()
$dom->loadHTML($res);
$xpath=new DomXPath($dom);
$node= $xpath->query($xpath_query)->item(0);
echo $node->nodeValue;
您只需要在php.ini中启用curl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。