0

好的,所以我有以下功能可以抓取我需要的网页:

function login2($url2) {
   $fp = fopen("cookie.txt", "w");
   fclose($fp);
   $login2 = curl_init();
   curl_setopt($login2, CURLOPT_COOKIEJAR, "cookies.txt");
   curl_setopt($login2, CURLOPT_COOKIEFILE, "cookies.txt");
   curl_setopt($login2, CURLOPT_TIMEOUT, 40000);
   curl_setopt($login2, CURLOPT_RETURNTRANSFER, TRUE);
   curl_setopt($login2, CURLOPT_URL, $url2);
   curl_setopt($login2, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
   curl_setopt($login2, CURLOPT_FOLLOWLOCATION, false);

   [...]

然后我发出这个以使用该功能:

echo login2("https://example.com/clue/holes.aspx");

这呼应了我请求的页面,但我只希望它呼应来自 HTML 源的特定数据。这是具体的标记:

<h4>
   <label id="cooling percent" for="symbol">*</label>
   4.50
</h4>

我想要的唯一信息是该图,在此特定示例中为4.50

那么我该如何解决这个问题并让我的 cURL 抓住它并回显它而不是回显整个页面呢?

4

1 回答 1

0

您可以使用 XPath 解决此问题:

$html = login2('https://example.com/clue/holes.aspx');

$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$value = $xpath->query('//label[@id="ctl00_ctl00_PageContainer_MyAccountContainer_symPound"]/following-sibling::text()')->item(0)->nodeValue;

echo $value;
于 2013-06-17T20:32:46.110 回答