首页
微语
统计
友链
留言
memos
圈子
图床
推荐
相册
网站监控
VPS监控
Search
1
实现typecho微信时光机功能的图文教程
47,870 阅读
2
为Typecho添加webp解析
43,556 阅读
3
Memos备忘录,记录瞬间想法
27,949 阅读
4
emlog数据成功迁移到typecho
27,821 阅读
5
Jasmine - 简约、美观的博客主题
26,535 阅读
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
排行榜    
登录
/
注册
Search
标签搜索
wordpress
发布
插件
免费
教程
typecho
EMlog
PHP
代码
CSS
华为
图片
代码修改
安装
评论
手机
诺基亚
微信
文章
智能
Chen'mo
累计撰写
1,269
篇文章
累计收到
378
条评论
首页
栏目
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
页面
微语
统计
友链
留言
memos
推荐
相册
网站监控
VPS监控
搜索到
2
篇与
的结果
2021-05-25
一个远程采集接口图片的小小案例
[PHP]并不太适合采集,建议用 Python 才稳定话不多说了,上代码了....<?php /** * 随机图片远程采集案例 * @author ** * @url http://blog.kieng.cn * @time 2018-11-14 */ header('Content-type: application/json'); //图片接口地址 $url = 'https://cdn.seovx.com/?mom=302'; // 图片存放文件夹 $path = 'images/'; //获取图片真实地址 $url = url_get($url); //获取文件名 $filenames = basename($url); $file_c = $path . $filenames; if (file_exists($file_c)) { //文件已经存在 echo json_encode(array('url' => $url, 'filename' => $filenames, 'state' => '202')); } else { if (download($url, $path)) { //采集成功 echo json_encode(array('url' => $url, 'filename' => $filenames, 'state' => '200')); } else { //采集失败 echo json_encode(array('url' => $url, 'filename' => $filenames, 'state' => '201')); } } function url_get($url) { // 获取图片真实地址 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 下面两行为不验证证书和 HOST,建议在此前判断 URL 是否是 HTTPS curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // $ret 返回跳转信息 $ret = curl_exec($ch); // $info 以 array 形式返回跳转信息 $info = curl_getinfo($ch); // 记得关闭 curl curl_close($ch); // 跳转后的 URL 信息 return $info['url']; } function download($url, $path = 'images/') { //远程下载保存 if (!file_exists($path)) { mkdir("$path", 0777, true); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); $filename = pathinfo($url, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); return true; }
2021年05月25日
2,357 阅读
0 评论
0 点赞
2017-09-12
XPath 语法
选取节点XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式: 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。 .. 选取当前节点的父节点。 @ 选取属性。 实例在下面的表格中,我们已列出了一些路径表达式以及表达式的结果: 路径表达式 结果 bookstore 选取 bookstore 元素的所有子节点。 /bookstore 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。 //book 选取所有 book 子元素,而不管它们在文档中的位置。 bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 //@lang 选取名为 lang 的所有属性。 谓语(Predicates)谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。实例在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果: 路径表达式 结果 /bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。 /bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。 /bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。 /bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。 //title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 /bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 /bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 选取未知节点XPath 通配符可用来选取未知的 XML 元素。 通配符 描述 * 匹配任何元素节点。 @* 匹配任何属性节点。 node() 匹配任何类型的节点。 实例在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果: 路径表达式 结果 /bookstore/* 选取 bookstore 元素的所有子元素。 //* 选取文档中的所有元素。 //title[@*] 选取所有带有属性的 title 元素。 选取若干路径通过在路径表达式中使用“|”运算符,您可以选取若干个路径。实例在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果: 路径表达式 结果 //book/title | //book/price 选取 book 元素的所有 title 和 price 元素。 //title | //price 选取文档中的所有 title 和 price 元素。 /bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 XPATH的几个常用函数1.contains (): //div[contains(@id, 'in')] ,表示选择id中包含有’in’的div节点2.text():由于一个节点的文本值不属于属性,比如<a class=”baidu“ href=”http://www.baidu.com“>baidu</a>,所以,用text()函数来匹配节点://a[text()='baidu']+3.last()://div[contains(@id, 'in')][las()],表示选择id中包含有'in'的div节点的最后一个节点4.starts-with(): //div[starts-with(@id, 'in')] ,表示选择以’in’开头的id属性的div节点5.not()函数,表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且class的值中不包含a的input节点。 not()函数通常与返回值为true or false的函数组合起来用,比如contains(),starts-with()等,但有一种特别情况请注意一下:我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input节点不含用id属性的,则为://input[not(@id)]
2017年09月12日
2,164 阅读
0 评论
0 点赞