【问题标题】:Get the source code of a page in php在php中获取一个页面的源代码
【发布时间】:2013-10-31 02:38:17
【问题描述】:

首先感谢您的下一次回复。

我无法获取页面的源代码(提取内容)

http://steamcommunity.com/market/search?q=booster#p2 (-->$path)

这是我的第一个源代码:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $path);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
$file_contents = curl_exec($ch);
curl_close($ch);
$file_contents =  htmlentities($file_contents);
print_r($file_contents);

这里是第二次试验:

$fp=null;
$fp=@fopen($path,"r");
$contenu = "";
if($fp){
 while(!feof($fp)){
 $contenu .=  stream_get_line($fp,65535);
 }
 print_r($contenu);
}
else{
 echo "Impossible d'ouvrir la page $path";
}

使用此代码,我得到此页面的源代码:http://steamcommunity.com/market/search?q=booster 或此页面 ..../market/search?q=booster#p1

我说firefox显示的源代码不好,只有dominspector才能看到“真实”的源代码。 你有解决办法吗?

【问题讨论】:

    标签: javascript php steam


    【解决方案1】:

    您将无法使用 PHP 执行此操作。您需要执行页面的 javascript 来获取渲染的 DOM。 (渲染的 DOM 是您在使用 DOM 检查器时看到的。)

    也许使用 PhantomJS 打开页面并获取渲染的 DOM。见Using Phantom.js evaluate, how can I get the HTML of the page?

    【讨论】:

    • 请问为什么不应该用 php 做这个?
    • 因为要获取渲染后的DOM,需要在页面上执行javascript。 PHP 做不到。只有真正的网络浏览器可以。
    【解决方案2】:

    您访问了错误的 URL。相反,点击其中的 AJAX 查询并将其解析为 JSON:

    $f = file_get_contents(
        "http://steamcommunity.com/market/search/render/?" .
        "query=booster&start=10&count=10"
    );
    $t = json_decode( $f );
    print_r( $t );
    

    你会得到一个井井有条的结构,例如:

    stdClass Object (
        [success] => 1
        [start] => 0
        [pagesize] => 10
        [total_count] => 330
        [results_html] => <div class="market_listing_table_header">
        ...
    

    本质上,用于呈现页面的 JSON 文件可以作为 PHP 中的简洁结构读取。或者足够接近。您仍然需要使用 DOM Document / XPath 遍历 $t-&gt;results_html 以进行进一步解析。

    【讨论】:

    • 哇!非常感谢你。链接“http://”x2 的小错误。但是你怎么知道AJAX请求??????
    【解决方案3】:

    我说firefox显示的源代码不好,只有dominspector才能看到“真实”的源代码。你有解决办法吗?

    这完全是倒退。 DOM 检查器向您显示页面的当前状态,由 Javascript 和/或用户修改(例如,表单状态更改)。 Firefox 的“查看源代码”显示的源代码是 Web 服务器提供的“真实”源代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-05
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多