我试图将一个span类从一个网站拉到另一个网站,但似乎无法使它工作。是否可以使用curl从不同的网站获取单个单词?
什么是span类的正确语法?我的代码收到了警告:
Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/uptickgather.php on line 25
我的代码:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://quotes.wsj.com/UEPS');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
libxml_use_internal_errors(true);
$html = curl_exec($ch); // the whole document (in string) goes in here
$dom = new DOMDocument();
$dom->loadHTML($html); // load it
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$class = $xpath->query('//[@class="cr_info info_price price_l"]//');
echo $class->nodeValue . ' ';
?>
第25行是:
echo $class->nodeValue . ' ';
到目前为止,我已尝试更改查询格式以使用@语法。因此我尝试使用单斜杠,但据我所知,双斜杠将显示名称为
的所有属性"cr_info info_price price_l"
我也尝试使用以下内容:
$class = $xpath->query('//[@class="cr_info info_price price_l"]//');
然而,我似乎无法使其发挥作用。有没有xpath / curl经验的人对如何解决这个问题有任何建议吗?
编辑:当我使用var dump时,它看起来像:
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
但是我试图重新编码,而且完全迷失了。有人可以帮忙吗?
答案 0 :(得分:0)
我建议结合以下两个类来从其他网站获取信息:
从任何HTML标记,内容或标记属性中提取信息:http://simplehtmldom.sourceforge.net/
易于处理卷曲,支持POST请求:https://github.com/php-curl-class/php-curl-class
所以,在你的例子中:
//download and include the 2 classes:
include('path/to/curl.php');
include('path/to/simple_html_dom.php');
$url = 'http://quotes.wsj.com/UEPS';
$curl = new Curl;
$html = str_get_html($curl->get($url)); //pull all html of a website
$span = $html->find('span[class="cr_info info_price price_l"]',0)->plaintext; //find span tag that contains the following class, 0 means that it is first element that matches tag span and that class, plaintext means it will remove tags leaving only text within tag
echo $span; //contents of span, e.g. $ 10.811 USD