だから私は非常に新しいPHPです。しかし、いくつかの助けを借りて、h1 class = ____のようなタグ識別子があれば、サイトを掻き集める方法を見つけました。PHPは特定の値や数値をスクラップして出力します。
さらに、私が望む正確な単語や値を出力する方法を考え出しました。それが空白の空白で区切られている限り。たとえば、指定されたタグ名< INVENTORY>の出力が「30ボール」の場合、[0]をエコーするように指定することができ、30個しか出力されません。それは素晴らしいです。
私は問題に遭遇していますが、空白で区切られていない値を抽出しようとしていました。つまり、ソースサイトの数字が時間の経過とともに変化する可能性があるため、出力として「-34.89」を指定します(正確には、そのサイトの所在地にある数字に関係なく)。
しかし、私の出力は "-34.89dowjonesstockchange"です。空白はありません。
-34.89を出力するにはどうすればよいですか?または、その日に何処にいてもかまいません。上記の出力を表すいくつかの方法があり、exの値[0,1,2,3,4,5]のみを出力する必要があります。これは値の数で-34.89になります。
以下は、空白で決まる単語と値を出力するウェブサイト上のテスト例です。これは私が必要としているほとんどのものですが、より正確なこの方法が欠けています。
// this function is a scrapping function for ethereumchange
function getEthereumchange(){
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
$doc->strictErrorChecking = false;
$doc->recover = true;
$doc->loadHTMLFile('https://coinmarketcap.com/');
$xpath = new DOMXPath($doc);
$query = "//tr[@id='id-ethereum']";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
$result = trim($entry->textContent);
$ret_ = explode(' ', $result);
//make sure every element in the array don't start or end with blank
foreach ($ret_ as $key=>$val){
$ret_[$key]=trim($val);
}
//delete the empty element and the element is blank "\n" "\r" "\t"
//I modify this line
$ret_ = array_values(array_filter($ret_,deleteBlankInArray));
//echo the last element
file_put_contents(globalVars::$_cache_dir . "ethereumchange",
$ret_[7]);
}
ありがとうございました。
実際、私はこれを作って、理想的にはどの値にも適用できるようにしようとしています。出力の番号位置によって識別されます。 – Masteryogurt
@ Masteryogurtあなたは、明示的にあなたが望むフィールドをターゲットにするほうがよいでしょう。明示的にテーブルに新しい列を追加すると、スクリプトは機能しなくなります。 –
ええ、私はあなたが何を意味知っています。問題は、多くの場合、これらのフィールド/タグに多くのデータが含まれていることです。クリーンなものを見つけるのは非常に困難です。典型的には、上記の空白のPHP関数でターゲットをうまく乗り越えています。私は空白で見つけることができませんでした。私は時々、ソースサイトで何か変更があった場合、いくつかの数字を調整する必要があるという事実を推測します。今のところ、私はそれと一緒に暮らすことができます。 – Masteryogurt