2010-04-29 56 views

回答

0

您可以使用curl从您想要的URL中获取html,然后解析结果以“抓取”您想要的div。

9

您可以使用PHP Simple DOM Parser来抓取页面并轻松选择其中的一部分。

一样简单:

$html = file_get_html('http://www.google.com/'); 
$ret = $html->find('div[id=foo]'); 

文档here

如果你想要做的是抓住http://www.freeoh.net/的标题,下面的代码将工作。您需要在与以下脚本相同的文件夹中放置simple_html_dom.php和一个名为page.txt的文件(确保该脚本有权读取和写入该文件)。 (我假设你已经启用卷曲,因为你在你的问题中提到它。)

<?php 

include 'simple_html_dom.php'; 

$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, "http://www.freeoh.net/"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_REFERER, "http://www.freeoh.net/"); 

$result = curl_exec ($curl); 
curl_close ($curl); 
//write contents of $result to file 
$File = "page.txt"; 
$fh = fopen($File, 'w') or die("can't open file"); 
fwrite($fh, $result); 
fclose($fh); 
//turn file into dom object 
$page = file_get_html("page.txt"); 
$header = $page->find("div", 1); 
echo $header; 

?> 

这是一个有点哈克,因为我用卷曲抓住页面,然后需要存储在某个地方,使PHP简单HTML Dom解析器会正确解析它,但它可以工作。

+0

这只是打破了网页,例如运行此: find('div [id = header]'); ?> – James 2010-04-29 01:21:37

+0

编辑我的答案。如果您想从网站抓取标题,则代码正在运行。 – 2010-04-29 03:32:31

+2

+1不使用正则表达式。 – SLaks 2010-04-29 13:29:51

0

按照乔治所说的那样进行刮擦​​。
你仍然需要使用Curl和正则表达式。

+2

正则表达式将不可靠。 DOM解析器将更加可靠。 – alex 2010-04-29 03:51:28

相关问题