3

我的目标网站包含这样的代码

<form>
<input type="text" name="suggest" value="www.google.com">
<input type="submit" value="submit">
</form>

我使用 Curl Php 获取此页面

<?php
$url="http://mysite.com"; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
$result = curl_exec ($ch); 
echo $result;  
curl_close($ch);
?>

如何使用 id 或 name 获取元素值?例如,输入名称 =“建议”中的“www.google.com”。谢谢你帮助我。

我不能将此代码用于这样的远程:

<?php
require 'Path/QueryPath.php';
qp('http://hipfile.com/bbgfom5ej9tm/zakhme_shaneie_haava_dvdrip.wmv.html/')-

find('[password="login"]')->writeHTML(); ?>

并返回此错误

致命错误:在http://hipfile.com/bbgfom5ej9tm/zakhme_shaneie_haava_dvdrip.wmv.html/中预期带有消息 'DOMDocument::load() [domdocument.load]: AttValue:" 的未捕获异常 'QueryPathParseException',行:18 (C:\xampplite\htdocs\test1\Path\QueryPath.php:2106)' 在 C:\xampplite\htdocs\test1\Path\QueryPath.php:2346 堆栈跟踪:#0 [内部函数]: QueryPathParseException::initializeFromError(2, 'DOMDocument::lo...', 'C:\xampplite\ht...', 2106, Array) #1 C:\xampplite\htdocs\test1\Path\QueryPath.php( 2106): DOMDocument->load('http://hipfile....', 0) #2 C:\xampplite\htdocs\test1\Path\QueryPath.php(179): QueryPath->parseXMLFile('http: //hipfile....', NULL, NULL) #3 C:\xampplite\htdocs\test1\Path\QueryPath.php(23): QueryPath->__construct('http://hipfile....', NULL, Array) #4 C:\xampplite\htdocs\test1\index.php(3): qp('http://hipfile....') #5 {main} throw in C:\xampplite\htdocs\第 2346 行的 test1\Path\QueryPath.php

可以帮我?我使用了两个 DOM 和 simplehtmldom 但不适合我。它仅适用于本地页面。

4

2 回答 2

3

您必须使用 DOM 解析器。最近我一直在使用查询路径:http: //querypath.org/

qp($result)->find('[name="name"]');
于 2012-05-11T09:19:43.417 回答
1

试试这个

<?php

$url="http://mysite.com"; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
$result = curl_exec ($ch); 
echo $result;  
curl_close($ch);

// include simple_html_dom class here
// which can be downloaded from http://simplehtmldom.sourceforge.net/

$oDom = new simple_html_dom();
$oDom->load($result);
$textFieldValue = $oDom->find('[name="suggest"]',0)->value;
echo $textFieldValue; // will return www.google.com

?>
于 2012-05-11T09:44:57.497 回答