从外部网页获取数据


Getting data from an external webpage

通过php从外部网站获取内容的最佳方式是什么?

使用php我如何去网页(例如:http://store.domain.com/1/)和扫描HTML编码之间的数据(这是字母C和E)。我使用什么php方法?

<span id="ctl00_ContentPlaceHolder1_phstats1_pname">C</span>
<span id="ctl00_ContentPlaceHolder1_phstats2_pname">E</span>

然后保存"C"(找到的字符串)到$pname

$_session['pname1'] = $pname1;
$_session['pname2'] = $pname2;

你需要使用网页抓取技术。它可以简单地通过使用HTML DOM LibraryNode.jsjQuery等技术来完成。你可以在这里和这里找到一些有用的教程。

你也可以看到这个线程关于实现抓取使用PHP

最有效的方法是:

$content = file_get_contents('http://www.domain.com/whatever.html');
$pos = str_pos($content,'id="c');
$on=0;
while($pos!==false)
 {
 $content = substr($content,$pos+4);
 $pos = str_pos($content,'"');
 $list[$on] = substr($content,0,$pos);
 $on++;
 $pos = str_pos($content,'id="c');
 }

那么你的所有值都将在$list数组中,该数组的计数为$on。

你也可以用一个妊娠函数在一行中完成它,但我喜欢老派的方法,它快了毫微秒。

我认为你实际上可以使用file_get_contents("http://store.domain.com/1/");做一个http请求。

至于解析它,取决于你的项目有多大,你愿意付出多大的努力,你可以找到一个html DOM解析器,像这里http://simplehtmldom.sourceforge.net/或简单地搜索id="ctl00_ContentPlaceHolder1_phstats1_pname",并把它一块一块地拆开(不是推荐的做事方式)。

可以通过CURL完成。但是您可以在项目中包含简单HTML DOM解析器。它非常容易使用,将满足您的目的。

文档在这里。http://simplehtmldom.sourceforge.net/