【发布时间】:2011-07-18 03:45:15
【问题描述】:
所以,我正在编写一个 PHP 脚本,其中一部分需要能够查询网站,然后从中获取文本。
首先,我需要能够查询某个网站的 URL,然后我需要能够在查询后从该网站的文本中获取文本,并能够从函数中返回该文本。
如何查询网站并从中获取文本?
【问题讨论】:
所以,我正在编写一个 PHP 脚本,其中一部分需要能够查询网站,然后从中获取文本。
首先,我需要能够查询某个网站的 URL,然后我需要能够在查询后从该网站的文本中获取文本,并能够从函数中返回该文本。
如何查询网站并从中获取文本?
【问题讨论】:
最简单的方法:
这将为您提供网页的来源。
您可能想要更完整的东西,所以请查看cURL,以获得更好的错误处理和设置用户代理等等。
从那里,如果您只想要文本,您将不得不解析页面。为此,请参阅:How do you parse and process HTML/XML in PHP?
【讨论】:
我会做一个 dom 搜索,看看http://www.php.net/manual/es/domdocument.load.php Domxpath 可能也很有用:http://php.net/manual/en/class.domxpath.php
$doc = new DOMDocument;
$doc->load("http://mysite.com");
$xpath = new DOMXpath($doc);
$elements = $xpath->query("*/div[@id='yourTagIdHere']");
【讨论】:
您可以使用file_get_contents,或者如果您需要更多控制(即提交 POST 请求、设置用户代理字符串等),您可能需要查看cURL。
file_get_contents 示例:
$content = file_get_contents('http://www.example.org');
基本 cURL 示例:
$ch = curl_init('http://www.example.org');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3');
$content = curl_exec($ch);
curl_close($ch);
【讨论】:
如果您安装了 Curl,请使用它。否则:
$website = file_get_contents('http://google.com');
然后你需要在字符串中搜索你想要的文本。具体操作方式取决于网站以及您尝试阅读的文本。
【讨论】:
您需要使用 CURL。你可以得到一些样品here
【讨论】:
如果您想要更多控制,请使用 cURL。否则:file_get_contents..
$url = "http://www.example.com/test.php"; // Site URL.
$site = file_get_contents($url); // Gets site response.
【讨论】:
这是否可以通过使用上面已经列出的方法从网页中获取所有内容,然后使用 regex 来删除左括号和右括号之间的所有字符?
如下所示的页面:
<html><style> h1 { font-style:... }</style><h1>stuff in here</h1></html>
在正则表达式之后会变成这个:
h1 { font-style:... }stuff in here
因为我们想要删除各种标签之间的所有代码,例如 [style] 标签,我们可以首先使用正则表达式删除 [style 和 /style] 之间的所有字符,这样我们就剩下:
stuff in here
那么这行得通吗?如果您认为会发生错误,或者您预见到错误,请回复,因为我想使用此解析创建一个工具。
【讨论】: