0

まず、次の回答に感謝します。

のページのソースコード(コンテンツを抽出するため)を取得できません

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

ここに私の最初のソースコードがあります:

$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);

ここで2回目の試行:

$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 インスペクタだけが「本当の」ソース コードを見ることができると言いました。解決策はありますか?

4

3 に答える 3

1

PHP を使用してこれを行うことはできません。レンダリングされた DOM を取得するには、ページの JavaScript を実行する必要があります。(レンダリングされた DOM は、DOM インスペクターを使用したときに表示されるものです。)

おそらく PhantomJS を使用してページを開き、レンダリングされた DOM を取得します。Phantom.js の評価の使用を参照してください。ページの HTML を取得するにはどうすればよいですか? .

于 2013-10-31T02:42:05.877 に答える
0

間違った 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 で適切な構造として読み取ることができます。または十分に近い。$t->results_htmlさらに解析を行うには、DOM Document / XPath を使用する必要があります。

于 2013-10-31T02:50:38.930 に答える
0

私は、firefox によって表示されるソース コードは良くなく、dom インスペクターだけが「本当の」ソース コードを見ることができると言いました。解決策はありますか?

それは完全に後ろ向きです。DOM インスペクターは、Javascript やユーザーによって変更されたページの現在の状態 (フォームの状態の変更など) を表示します。Firefox の「ソースの表示」で表示されるソース コードは、Web サーバーから配信される「実際の」ソース コードです。

于 2013-10-31T02:47:49.360 に答える