如何在PHP应用程序内从其他站点呈现javascript?

时间:2011-03-16 21:40:32

标签: javascript php import render

我要做的是从PHP应用程序内部的网页中读取特定行。这是我到目前为止的实验设置:

      <?php
           $url = "http://www.some-web-site.com";
           $file_contents = file_get_contents($url);
           $findme   = 'text to be found';
           $pos = strpos($file_contents, $findme);
           if ($pos == false) {
                echo "The string '$findme' was not found in the string";
           } else {
                echo "The string '$findme' was found in the string";
                echo " and exists at position $pos";
           }
      ?>

“if”语句现在包含echo运算符,稍后将更改为数据库运算符,当前设置是测试功能。

基本上问题是,使用此方法,页面上的任何java都将作为脚本返回。我需要的是脚本应该在浏览器中呈现的文本。在PHP中有没有办法做到这一点?

我最终想要实现的是通过从网站供应商处读取库存水平来更新电子商务网站内的库存。供应商不为此使用RSS源。

3 个答案:

答案 0 :(得分:2)

cURL没有javascript解析器。因此,如果您尝试阅读的内容在初始页面渲染后通过Javascript放置在页面中,则无法通过cURL访问它。

答案 1 :(得分:0)

应该执行脚本的结果并返回到您的脚本。 PHP不支持任何有关Web浏览器本身的功能。

我建议您尝试了解.NET框架(不是PHP)中包含的“网络抓取工具”和“网络浏览器”

这样你就可以使用php中的exec()命令来调用它。

尝试在codeproject.com上找到网络抓取工具和网络浏览器的示例代码

希望它有效。

答案 2 :(得分:0)

您可以将整个网页视为如下文件:

function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('http://example.com/page.htm');
$my_file = 'file.htm';
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
fwrite($handle, $returned_content);

然后我想你可以使用下面这个链接中解释的类作为将javascript与html(通常在head标签中)分开的指南。对于链接(导入).js文件,您必须重复这些URL的功能,以及链接/导入的CSS。如果需要将图像保存为文件,也可以抓取图像。 http://www.digeratimarketing.co.uk/2008/12/16/curl-page-scraping-script/