php Swoole多线程爬虫 四

107 阅读2分钟

「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战

课程背景

  • 我作为一个PHP工程师 虽然这几年PHP没落了
  • 但我还是有责任补充一些PHP方面的高级教程
  • 掘金粑粑开始更文奖励了 不能白白拿人家的奖励
  • 应该发表一些高层次的PHP的技术文章 别让PHP倒了

正文开始

我们继续上一节中 Xpath语法的讲解

//div  代表选择当前页面上所有的 div
//div[@class='news-list-box']  代表匹配当前页面下,类名为news-list-box的素有div

此时可以发现每一个item都有黄色的高亮。代表我们选择了当前的元素

5 继续定位

//div[@class='news-list-box']/div[@class='news-list-box-right']/a/img/@src

image.png

/div[@class='news-list-box-right']/  代表上个div下面的 类名为 news-list-box-right div
/a/img/@src  代表a标签下面的 img 下面的 src属性的值

通过上面的匹配会发现,我们取出了当前页面所有的图片的src

6 根据匹配出的数据,在php中提取数据

    $body = (string)$response->getBody();
    $dom = new DOMDocument();
    @$dom->loadHTML($body);
    $xpath = new DOMXPath($dom);

    //提取图片
    $data = $xpath->query("//div[@class='news-list-box']/div[@class='news-list-box-right']/a/img/@src");

现在的数据传递都是json形式的,在json之前其实所有的数据都是通过 xml。可能接触过一些银联,或者海关的那些接口的项目会发现,他们用的仍然是Xml。php提供对于xml文件的一些列操作的底层。只是现在用的非常少了,也是比较难用的。这里我们是通过 DOMDocument将 html内容解析为Xml的 dom树结构,然后用提供的api对xml中的数据进行查询,遍历等等的操作。这里的网上的教程很少了,需要去看php的手册。