Php 使用curl从网页获取内容
首先看一下这里,Php 使用curl从网页获取内容,php,curl,webpage,fetch,Php,Curl,Webpage,Fetch,首先看一下这里, www.zedge.net/txts/4519/ 这个页面有这么多的文字信息,我想让我的脚本打开并下载每一条信息, 但是我有点问题 这是我打开页面的简单脚本 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.zedge.net/txts/4519"); $contents = curl_exec ($ch); curl_setopt($ch, CURLOPT_RETURNTRAN
www.zedge.net/txts/4519/
这个页面有这么多的文字信息,我想让我的脚本打开并下载每一条信息,
但是我有点问题
这是我打开页面的简单脚本
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.zedge.net/txts/4519");
$contents = curl_exec ($ch);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_close ($ch);
?>
在页面中查找文本消息的所有链接,并将每个链接保存到一个文本文件中(每行一个),然后运行另一个curl会话,打开文本文件逐个读取每个链接,打开它从特定DIV复制内容,然后将其保存到新文件中。算法非常简单:
- 使用curl下载
www.zedge.net/txts/4519
- 使用(或替代)链接解析它
- 要么将它们全部存储到文本文件/数据库中,要么使用“subrequest”动态处理它们
可遍历的,因此您可以使用foreach
小贴士:
- 使用curl opt
COOKIE\u JAR\u文件
- 使用
sleep(…)
不淹没服务器
- 设置php时间和内存限制
算法非常简单:
- 使用curl下载
www.zedge.net/txts/4519
- 使用(或替代)链接解析它
- 要么将它们全部存储到文本文件/数据库中,要么使用“subrequest”动态处理它们
有关详细信息,请参阅文档和示例,请注意,实现了可遍历的,因此您可以使用foreach
小贴士:
- 使用curl opt
COOKIE\u JAR\u文件
- 使用
sleep(…)
不淹没服务器
- 设置php时间和内存限制
我使用DOM作为代码部分。我调用了我的愿望页面,并使用getElementsByTagName('td')
这里我想从设备页面了解继电器的状态。每次我想要更新继电器的状态。为此,我使用了下面的代码
$keywords = array();
$domain = array('http://USERNAME:PASSWORD@URL/index.htm');
$doc = new DOMDocument;
$doc->preserveWhiteSpace = FALSE;
foreach ($domain as $key => $value) {
@$doc->loadHTMLFile($value);
//$anchor_tags = $doc->getElementsByTagName('table');
//$anchor_tags = $doc->getElementsByTagName('tr');
$anchor_tags = $doc->getElementsByTagName('td');
foreach ($anchor_tags as $tag) {
$keywords[] = strtolower($tag->nodeValue);
//echo $keywords[0];
}
}
然后我在$keywords[]
数组中获得所需的中继名称和状态。
在这里,我分享输出
如果要阅读主页中的所有消息。然后,首先您必须收集单独消息的所有链接。然后,您可以将其用于进一步的相同过程。我将DOM用于代码部分。我调用了我的愿望页面,并使用getElementsByTagName('td')
这里我想从设备页面了解继电器的状态。每次我想要更新继电器的状态。为此,我使用了下面的代码
$keywords = array();
$domain = array('http://USERNAME:PASSWORD@URL/index.htm');
$doc = new DOMDocument;
$doc->preserveWhiteSpace = FALSE;
foreach ($domain as $key => $value) {
@$doc->loadHTMLFile($value);
//$anchor_tags = $doc->getElementsByTagName('table');
//$anchor_tags = $doc->getElementsByTagName('tr');
$anchor_tags = $doc->getElementsByTagName('td');
foreach ($anchor_tags as $tag) {
$keywords[] = strtolower($tag->nodeValue);
//echo $keywords[0];
}
}
然后我在$keywords[]
数组中获得所需的中继名称和状态。
在这里,我分享输出
如果要阅读主页中的所有消息。然后,首先您必须收集单独消息的所有链接。然后,您可以将其用于进一步的相同过程。我对DOM了解不多,当我打开您为DOM提供的链接时,有很多东西需要阅读:哦,顺便说一句,我尝试了您的代码,它显示了一个错误警告:DOMDocument::loadHTML()[DOMDocument.loadHTML]:在E:\Installations\xampp\htdocs\wp\test1.php联机中作为输入提供的空字符串7@Xufyan检查$contents
(var\u dump($contents)
)的内容我没听清楚,搜索了很多:/n请您解释一下,首先您必须有正确的$contents
,因此您必须检查$contents
是否为空。。。(curl请求成功)还有php.net/manual/en/function.curl-getinfo.php这个带有CURLINFO_HTTP_的代码应该返回200
我对DOM不太了解,当我打开你为DOM提供的链接时,有很多东西要读:哦,顺便说一句,我尝试了你的代码,它显示了一个错误警告:DOMDocument::loadHTML()[DOMDocument.loadHTML]:在E:\Installations\xampp\htdocs\wp\test1.php联机中作为输入提供的空字符串7@Xufyan检查$contents
(var\u dump($contents)
)的内容我没听清楚,搜索了很多:/n请您解释一下,首先您必须有正确的$contents
,因此您必须检查$contents
是否为空。。。(curl请求成功)还有php.net/manual/en/function.curl-getinfo.php这个带有CURLINFO_HTTP_的代码应该返回200
$keywords = array();
$domain = array('http://USERNAME:PASSWORD@URL/index.htm');
$doc = new DOMDocument;
$doc->preserveWhiteSpace = FALSE;
foreach ($domain as $key => $value) {
@$doc->loadHTMLFile($value);
//$anchor_tags = $doc->getElementsByTagName('table');
//$anchor_tags = $doc->getElementsByTagName('tr');
$anchor_tags = $doc->getElementsByTagName('td');
foreach ($anchor_tags as $tag) {
$keywords[] = strtolower($tag->nodeValue);
//echo $keywords[0];
}
}