Php 如何从网页中提取文本数据?

Php 如何从网页中提取文本数据?,php,dom,curl,xpath,web-scraping,Php,Dom,Curl,Xpath,Web Scraping,好的,我有以下函数来获取我需要的网页: 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_s

好的,我有以下函数来获取我需要的网页:

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
我想要的唯一一条信息是这个图,在这个具体的例子中是4.50


那么,我如何才能做到这一点,让我的cURL抓取并回显它,而不是回显整个页面呢?

您可以使用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;

你可以用XPath解决这个问题,但我需要你提供更多的HTML代码。bwoebi我喜欢我很久以前使用dom解析器的想法,但我一辈子都记不清该怎么做。你能帮我找到你需要的确切代码吗?例如,
id
不能包含空格:
id=“cooling percent”
,这就是它在网页上出现的方式吗?这是一个真实的例子