从外部网页获取数据

时间:2011-11-04 04:27:03

标签: php

通过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;

4 个答案:

答案 0 :(得分:4)

您需要使用网页抓取技术。只需使用HTML DOM LibraryNode.jsjQuery等技术即可完成此操作。您可以找到一些有关此herehere.

的有用教程

您可能还会看到thread有关使用PHP

实施抓取的问题

答案 1 :(得分:3)

最有效的方法是:

$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。

你也可以使用其中一个preg函数在一行中完成它,但我喜欢老式的方法,它的速度要快一纳秒。

答案 2 :(得分:0)

我认为您实际上可以使用file_get_contents("http://store.domain.com/1/");来执行http请求。

就解析而言,取决于您的项目有多大以及您愿意花多少精力,您可以找到像http://simplehtmldom.sourceforge.net/这样的html DOM解析器,或者只是搜索id="ctl00_ContentPlaceHolder1_phstats1_pname"并逐一分开(不是推荐的做事方式)。

答案 3 :(得分:0)

可以通过CURL完成。但您可以在项目中包含Simple HTML DOM Parser。它非常易于使用,并将满足您的需求。

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