2012-01-04 88 views
1

可能重复:
How to parse and process HTML with PHP?如何使用PHP从HTML中提取特定内容?

我如何去从一个给定的网上直播的HTML页面拉动具体内容?

例如:http://www.gumtree.com/p/for-sale/ovation-semi-acoustic-guitar/93991967

我要检索的文字说明,路径到主图像,只有价格。所以基本上,我想要检索特定div内的内容,可能会在html页面中使用特定的ID或类。

的伪代码

$page = load_html_contents('http://www.gumtr..'); 
$price = getPrice($page); 
$description = getDescription($page); 
$title = getTitle($page); 

请注意,我不打算从加姆特里窃取任何内容,或其他任何地方为此事,我只是提供了一个例子。

+0

TOS为犯难禁止这一点。 – 2012-01-04 10:54:39

+0

我不打算从gumtree窃取任何内容,这只是一个例子。 – emkay 2012-01-04 10:56:54

+0

http://www.php.net/manual/en/book.dom.php – clyfe 2012-01-04 10:57:39

回答

1

通过robotrobert推荐教程Easy web scraping with PHP是很好的开始,我在它提出了一些意见。为了获得更好的性能,请使用curl。除此之外,它还处理HTTP标头,SSL,Cookie,代理等.Cookie是您必须注意的事情。

我刚刚发现HTML Parsing and Screen Scraping with the Simple HTML DOM Library。更先进,便于并通过DOM解析器加速页面解析(而不是正则表达式 - 很难掌握和耗费资源)。我建议你最后一个100%。

2

像这将是一个很好的起点,如果你想要表格输出

$raw=file_get_contents($url) or die('could not select'); 
$newlines=array("\t","\n","\r","\x20\x20","\0","\x0B","<br/>"); 
$content=str_replace($newlines, "", html_entity_decode($raw)); 
$start=strpos($content,'<some id> '); 
$end = strpos($content,'</ending id>'); 
$table = substr($content,$start,$end-$start); 
preg_match_all("|<tr(.*)</tr>|U",$table,$rows); 
foreach ($rows[0] as $row){ 
if ((strpos($row,'<th')===false)){ 
// array to vars 
preg_match_all("|<td(.*)</td>|U",$row,$cells); 
$var1= strip_tags($cells[0][0]); 
$var2= strip_tags($cells[0][1]); 

等等等等

+0

file_get_contents可能需要用curl替换。例如,我的共享主机帐户已禁用file_get_contents ...但在本地主机上工作 – ChelseaStats 2012-01-04 13:49:22