2011-08-04 7 views
0

これは初心者向けの質問ですが謝罪しますが、なぜこれが機能しないのかわかりません。検索。シンプルなHTML DOMで奇妙な問題が発生し、ネストループでデータを抽出する

基本的には、私たちのサイトからいくつかのユーザ詳細を削り取ろうとしていますが、これはREST APIのサイトからは利用できませんので、手動で行う必要があります。私はシンプルなHTMLのDomを介して各ユーザーからの希望の詳細を取得するために使用するuseridsでテキストファイルをコンパイルしました。

<?php 
include('simple_html_dom.php') ; 
include('functions.php') ; 

$file = fopen("userids2.txt", "r") ; 
while(!feof($file)) { 
    $userid = fgetss($file) ; 
    $url = 'http://<our URL>/user/'.$userid ; 
    echo $url ; 
    webscraper($url) ; 

} 

fclose($file) ; 
?> 

、ここでのfunctions.phpの内容は以下のとおりです。

<?php 
function webscraper($loopurl) { 
    $html = new simple_html_dom(); 
    $html->load_file($loopurl); 
    $test = $html->getElementsById('ctl00_ContentPlaceHolderDefault_UserViewUC_tabContainer_tabProfile_userProfile_ddWork') ; 

    foreach ($test as $element) { 
     echo $element ; 
    } 
} 
?> 

使用される特定のテキストファイルは、私は私が欲しい情報が含まれている知っている4つのユーザーIDが含まれています。スクリプトを実行すると、テキストファイルの最後の行のURLからの出力のみが表示されます。 URLを正常に表示しますが、最初の3つのエントリのリモートHTMLの読み込みを拒否します。テキストファイルの最後の行を削除すると、新しい最終行が読み込まれます(これは前に行なわれませんでした)。

任意のアイデア?前もって感謝します。

答えて

0

Doh ..問題の内容がわかりました。最後のものを除いて、テキストファイル内のすべてのエントリには、「見えない」行末文字がありました。だからこそ、それは働くことを拒否した理由でした。行を取得する際にトリム追加すると、問題を修正しました:

$userid = trim(fgetss($file)); 

私はおそらくこれを知っている必要がありますが、少なくとも私は:-)次回この間違いをすることはありません。

関連する問題