我想用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系统版本11.3上)。 好吧:我有三个部分:由于我对XPath的经验很少,我在Mozilla-Browser中有一个Xpather-Tool。但我不确定应该如何应用它们 - 请参阅我收集的数据 - 下面: 也许你们中的一些人可以在这里帮助我 - 并告诉我如何在parsercode中应用它们:
我很乐意听取您的意见
在这里看到一些细节: 结果(来自大约213个不同的记录) - 见两个结果页: - 收集了一些Xpath数据:
示例:BürgerstiftungWiesloch http://buergerstiftungen.de/cps/rde/xchg/SID-A7DCD0D1-702CE0FA/buergerstiftungen/hs.xsl/db_20289.htm
/ HTML /体/格[@ ID = '主'] /格[@ ID = '包装'] /格[@ ID = '内'] /格[@ ID = 'marginalblock'] /格[ 1 /ρ
1。 Gründungsgeschichte / HTML /体/格[@ ID = '主'] /格[@ ID = '包装'] /格[@ ID = '内'] /格[@ ID = '内文'] / DIV / P [1 ] /强
2。 Kurzvorstellung / Ziele / HTML /体/格[@ ID = '主'] /格[@ ID = '包装'] /格[@ ID = '内'] /格[@ ID = '内文'] / DIV / P [2 ] /跨度[2] /跨度/ b
第3。 Projekte / HTML /体/格[@ ID = '主'] /格[@ ID = '包装'] /格[@ ID = '内'] /格[@ ID = '内文'] / DIV / P [3 ] /跨度〔2〕/跨度/强
KONTAKT: / HTML /体/格[@ ID = '主'] /格[@ ID = '包装'] /格[@ ID = '内'] /格[@ 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。那没问题。我应该输入Xpaths
在这一行:$ xpath_query =“/ html / body / ...”;
问题:我应该输入上面提到的所有X路径。从1到3 ......依此类推这最终如何看待你能帮助吗?我在这里 - 我是非常非常新的PHP?
期待收到你的来信!!非常感谢所有人和任何帮助!
零
答案 0 :(得分:1)
尝试这样的事情
$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