簡體   English   中英

在php中獲取頁面的源代碼

[英]Get the source code of a page in php

首先感謝您的下一個答復。

我無法獲取頁面的源代碼(以提取內容)

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顯示的源代碼不好,只有dom inspector允許我看到“真實的”源代碼。 你有解決方案嗎?

您將無法使用PHP執行此操作。 您需要執行頁面的javascript以獲取呈現的DOM。 (渲染的DOM是使用DOM檢查器時看到的。)

也許使用PhantomJS打開頁面並獲取渲染的DOM。 請參閱使用Phantom.js評估,如何獲取頁面的HTML?

我說過,firefox顯示的源代碼不好,只有dom inspector允許我看到“真實的”源代碼。 你有解決方案嗎?

那完全是倒退。 DOM檢查器向您顯示頁面的當前狀態,該狀態由Javascript和/或用戶修改(例如,表單狀態更改)。 Firefox的“查看源代碼”顯示的源代碼是Web服務器提供的“真實”源代碼。

您輸入的網址錯誤。 相反,請在其中的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->results_html進行進一步的解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM