Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回整个html的php xpath_Php_Html_Xpath_Curl_Screen Scraping - Fatal编程技术网

返回整个html的php xpath

返回整个html的php xpath,php,html,xpath,curl,screen-scraping,Php,Html,Xpath,Curl,Screen Scraping,为什么这会返回整个html文档,而不仅仅是包含“H+R+E”的节点的值 html示例: <tr class="linesAlt1"> <td>04:10 PM</td><td style="width:53%;">3055&nbsp;Over</td><td style="width:22%;">3&nbsp;H+R+E&nbsp;&nbsp;+146</td>

为什么这会返回整个html文档,而不仅仅是包含“H+R+E”的节点的值

html示例:

<tr class="linesAlt1">
        <td>04:10 PM</td><td style="width:53%;">3055&nbsp;Over</td><td style="width:22%;">3&nbsp;H+R+E&nbsp;&nbsp;+146</td>
    </tr>

默认情况下,
curl\u exec
打印到
STDOUT
,这就是您看到的。换句话说,您没有在
$html
中捕获任何输出(或者在该循环中打印任何内容)。首先,您需要重定向输出:

curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch); 
在解决了这个问题之后,我查看了提供的URL的来源,在其中的任何地方都找不到文本--
H+R+E
。它有一个表,但没有该内容。你在寻找一些不存在的东西

要证明它现在正在正确检索文件,请尝试以下完整示例:

$url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch); 
curl_close($ch);

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

foreach ($xpath->query("//table") as $table){
      echo "[" . $table->nodeValue . "\n";
}
…生成以下输出(
loadHTML
warnings省略):

[ 客户端ID: 密码: 有关设置卷曲选项的详细信息:


  • curl\u exec
    默认情况下打印到
    STDOUT
    ,这就是您看到的。换句话说,您没有在
    $html
    中捕获任何输出(或打印该循环中的任何内容)。首先,您需要重定向输出:

    curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);
    $html = curl_exec($ch); 
    
    在解决了这个问题后,我查看了提供的URL的来源,但在其中的任何地方都找不到文本--
    H+R+E
    。它只有一个表,但没有该内容。您正在查找不存在的内容

    要证明它现在正在正确检索文件,请尝试以下完整示例:

    $url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);
    $html = curl_exec($ch); 
    curl_close($ch);
    
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    $xpath = new DOMXPath($doc);
    
    foreach ($xpath->query("//table") as $table){
          echo "[" . $table->nodeValue . "\n";
    }
    
    …生成以下输出(
    loadHTML
    warnings省略):

    [ 客户端ID: 密码: 有关设置卷曲选项的详细信息:


    可能与名称空间有关?”“可能与名称空间有关?”谢谢。我意识到发帖后该信息源是一个坏例子,因为他们在晚上记下这些信息…不知道我会怎么解释,除非我只是从今天早些时候复制了整个信息源。谢谢。我意识到发帖后该信息源是一个坏例子,因为他们在晚上记下这些信息…不知道我会怎么解释除非我只是复制了今天早些时候的全部源代码,否则我将对此进行解释。