文档章节

goutte操作

k9606
 k9606
发布于 2018/03/09 18:13
字数 386
阅读 14
收藏 0

goutte操作

absolute path.
curl.cainfo = "E:/wamp/bin/php/php7.1.9/extras/ssl/cacert.pem"

2.修改php.ini文件,搜索curl.cainfo

 

 

  1. absolute path.  
  2. curl.cainfo = G:\phpStudy\WWW\cacert.pem  

 

Goutte基本用法

最近工作上用到PHP爬虫框架Goutte(号称是PHP上最好用的爬虫框架)。这里记下自己用到过的使用技巧,免得下次使用的时候再摸索。

table相关

html: <table id="ip_list">
      <tbody><tr>
  <th colspan="8"> <h2>国内高匿代理IP</h2>
      <a class="more" href="/nn">更多</a></th>
</tr>
  <tr class="subtitle">
    <th class="country">国家</th>
    <th>代理IP地址</th>
    <th>端口</th>
    <th width="20%">服务器地址</th>
    <th class="country">是否匿名</th>
    <th>类型</th>
          <th width="11%">存活时间</th>
    <th width="12%">验证时间</th>
  </tr>
  
  <tr class="odd">
    <td class="country"><img src="http://xxx.abc.com/images/flag/img.png" alt="cn"></td>
    <td>175.155.24.112</td>
    <td>808</td>
    <td>四川德阳</td>
    <td class="country">高匿</td>
    <td>HTTP</td>
      <td>3小时</td>
    <td>1分钟前</td>
  </tr>
 </tbody></table>
 
php: 
1.解析出td的内容
$crawler->filter('table#ip_list > tr')->each(function (Crawler $node, $i) {
            $ip = $node->filter('td')->each(function(Crawler $node_ip, $node_ip_num){
            $text = trim($node_ip->text());
            if (empty($text) && $node_ip_num > 0 && !empty(trim($node_ip->html()))) {
                $text = $node_ip->filter('div')->attr('title');
            }
            return $text;
            });
            return $ip;
        });
    }

2.按位置匹配td标签
$td = $crawler->filter(‘td’)->eq(1)->text();

匹配两个class

html : <div class=”class1 class2″>
php  : $crawler->filter(‘div.class1.class1’);

匹配id

html : <div id=”hello”>
php  : $crawler->filter(‘div#hello’);

图片

html : <img src=”http://www.lhzcl.com/image.png”>
php  : $crawler->filter(‘img’)->attr(‘src’);

内嵌html

这个我常用来检测匹配规则是否正确

html : <div class=”catchMeIfYouCan”><span id=”hello”>Hello</span>world</div>
php  : $crawler->filter(‘catchMeIfYouCan’)->html();

部分原创,部分参考了这篇博客

© 著作权归作者所有

共有 人打赏支持
下一篇: laravel
k9606
粉丝 0
博文 21
码字总数 6507
作品 0
私信 提问
如何入门 Python 爬虫?

以前用过 PHP 写爬虫程式,有很多开源可以用(像是 Goutte, phpcrawl)且用 PHP写起来的速度很快,但是执行的效能没有很好,爬起来速度很慢。最近看到很多大神推荐使用 Python 来爬网站做分析...

albertale
2015/05/29
28
1
PHP 开发者应了解的24个库

作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在 Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那...

slagga
2016/09/20
29
0
PHP 开发者应了解的 24 个库

作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在 Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那...

oschina
2013/12/31
16.1K
51
PHP开发者应了解的24个超酷的PHP库(微框架)

PHP开发者应了解的24个超酷的PHP库(微框架) 作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的...

开元中国2015
2015/04/22
249
0
Github上PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Composer库安装器 Pickle: 可以在任意平台上安装PHP扩展包 静态站点生成器 ...

zhiqiangw
2016/12/18
19
0

没有更多内容

加载失败,请刷新页面

加载更多

【Mysql技术内幕】第2章 InnoDB存储引擎

2.6 InnoDB关键特性 插入缓冲 两次写 自适应哈希索引 异步IO 刷新邻接页 2.6.1 插入缓冲 通常应用程序中行记录的插入顺序是按照主键的递增顺序进行插入的,因此插入聚集索引(Primary Key)一...

HOT_POT
44分钟前
2
0
Java8 如何正确使用 Optional

原文链接:https://blog.kaaass.net/archives/764 Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在...

大灰狼时间
44分钟前
2
0
富兰克林的人生信条

春节假期期间读了富兰克林自传,这位饱经风霜的老人出身贫寒,只读过两年书,但是通过刻苦自学和不懈奋斗还是取得了令人难以置信的成就,他的一生可以作为我们普通人的励志典范。 富兰克林 ...

春哥大魔王的博客
今天
1
0
不用中间变量交换 a ,b(三种方法)

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。 a = a + b; b = a - b; a = a - b; 2、异或法:可以完成对整型变量的交换,对于浮点型变量它...

robslove
今天
6
0
一文了解 OutOfMemory 及解决方案

1. Java 堆空间 发生频率 5颗星 造成原因 无法在 Java 堆中分配对象 吞吐量增加 应用程序无意中保存了对象引用,对象无法被 GC 回收 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立...

java菜分享
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部