1、使用curl实现站外采集具体请参考我上一篇笔记:http://www.jb51.net/article/46432.htm2、编码转换首先通过查看源代码找到采集的网站使用的编码,通过mb_convert_encoding函数进行转码;具体使用方法:复制代码 代码如下://源字符是$str //以下已知原编码为GBK,转换为utf-8 mb_convert_encoding($str, "UTF-8", "GBK"); //以下未知原编码,通过auto自动检测后,转换编码为utf-8 mb_convert_encoding($str, "UTF-8", "auto");3、...
过去用dede采集,总是过滤不掉一行以上的代码,只能一行行的过滤,在网上,发现有很多和我一样的菜鸟。随着不断的使用dede采集,对正则有了更进一步的了解,现在偶用一句正则表达式,同样可以匹配多行代码了。 如:在如下代码中,过滤掉有二行代码的超级链接。 <td align="center"> <a href="http://www.XXX.com/111111.htm">XXX XXX</a> </td> 用下面的过滤,即可实现多行匹配 {dede:trim} <a href="http://www.XXX.com/111111.ht...
代码如下://包含PHP Simple html Dom 类库文件 include_once('./simplehtmldom/simple_html_dom.php'); //采集html function getwebcontent($url){ $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); $contents = trim(curl_exec($ch)); curl_close($ch...
代码如下://采集html function getwebcontent($url){ $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); $contents = trim(curl_exec($ch)); curl_close($ch); return $contents; } //获得标题和url $string = getwebcontent(http://www.***.com/learn/...
过去用dede采集,总是过滤不掉一行以上的代码,只能一行行的过滤,在网上,发现有很多和我一样的菜鸟。随着不断的使用dede采集,对正则有了更进一步的了解,现在偶用一句正则表达式,同样可以匹配多行代码了。 如:在如下代码中,过滤掉有二行代码的超级链接。 XXX XXX 用下面的过滤,即可实现多行匹配 {dede:trim} ([^\n貌似 \n 这样的符号,可以充当换行符使用,一个 \n 代表一个换行。 希望对初学dede的人有用 以上就介绍了d...
PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑。PHP正则表达式的定义:用于描述字符排列和匹配模式的一种语法规则。PHP中的正则函数:PHP中有两套正则函数,两者功能差不多,分别为:一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数;一套由POSIX(Portable Operating ...
怎么去采集一个网页下面的AJAX数据,比如有些网页需要点击按钮才会出现数据(利用AJAX技术),我应该是如何去采集这些数据呢?回复内容:怎么去采集一个网页下面的AJAX数据,比如有些网页需要点击按钮才会出现数据(利用AJAX技术),我应该是如何去采集这些数据呢?F12 网络面板,看人家ajax向服务器发的什么,重点是包括http头,你也照着发就是了。使用curl
过去用dede采集,总是过滤不掉一行以上的代码,只能一行行的过滤,在网上,发现有很多和我一样的菜鸟。随着不断的使用dede采集,对正则有了更进一步的了解,现在偶用一句正则表达式,同样可以匹配多行代码了。 如:在如下代码中,过滤掉有二行代码的超级链接。 XXX XXX 用下面的过滤,即可实现多行匹配 {dede:trim} ([^\n貌似 \n 这样的符号,可以充当换行符使用,一个 \n 代表一个换行。 希望对初学dede的人有用 http://www.bk...
注意:下面的所有函数都没有用正则。 以上为取出第一个匹配的三个函数,实现相同的目的 代码如下:function str_cut($str ,$start, $end) {//取出第一个匹配,效率最高,先分割再替换 $content = strstr( $str, $start ); $content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $start ) ); return $content; } function str_cut1($str ,$start, $end) {//取出第一个匹配,效率中,直接查找替换 ...
代码如下://采集html function getwebcontent($url){ $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); $contents = trim(curl_exec($ch)); curl_close($ch); return $contents; } //获得标题和url $string = getwebcontent(http://www.***.com/learn/...
代码如下://包含PHP Simple html Dom 类库文件 include_once('./simplehtmldom/simple_html_dom.php'); //采集html function getwebcontent($url){ $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); $contents = trim(curl_exec($ch)); curl_close($ch...
做采集经常遇到的问题是内容排版问题,用了一些时间写了个用正则替换html标签和样式的函数,共享下。 代码如下:/** * 格式化内容 * @param string $content 内容最好统一用utf-8编码 * @return string * !本函数需要开启tidy扩展 */function removeFormat($content) { $replaces = array ( "//i" => '', "//i" => '', "//i" => , "/<\/strong>/i" => , "/<span.*?>/i" => , "/<\/span>/i" => , "//i" => "", "/<\/...
1、使用curl实现站外采集
具体请参考我上一篇笔记:http://www.gxlcms.com/article/46432.htm
2、编码转换首先通过查看源代码找到采集的网站使用的编码,通过mb_convert_encoding函数进行转码;
具体使用方法:代码如下://源字符是$str //以下已知原编码为GBK,转换为utf-8 mb_convert_encoding($str, "UTF-8", "GBK"); //以下未知原编码,通过auto自动检测后,转换编码为utf-8 mb_convert_encoding($str, "UTF-8", "auto");
3、为...
目标页:http://www.weather.com.cn/weather/101070101.shtml 查看其网页源码,想得到425行的数据,即“今天是2013年10月16日 星期三 农历九月十二”和621行“沈阳天气预报 (2013-10-16 18:00发布)" 和641行~765行之间主要数据。用图表示一下,见下图: 另外我自己写的一条规则,试着取了下这样的数据"沈阳天气预报 (2013-10-16 11:00发布)"但输入后为空数组,求指导!多谢! 回复讨论(解决方案) ...
采集获取,关于正则表达式的多条结果,只获取1条, 1 2 3 4 表达式 获取结果 /(.*?)/i 匹配多条出来。也就是所有。 有个疑问。 只获取第一条。 或者只获取最后一条。 这正则怎么写? 获取第一条,很多人认为会 /.*(.*?)/ 除开这种,还会有其他吗? 回复讨论(解决方案) 匹配第一条 用preg_match 不就行了 最后一条可以用 /(.*?)<\/li>\s*<\/ul>/ 匹配第一条 用preg...