在使用 symfony 中。有需求需要对页面元素进行 爬虫。 一开始 计划其他办法。 但是 好在symfony有官方 爬虫组件。 索性看文档 直接 就可以使用。

 $url = $this->baseUrl . $list->getApiUrL();$response = file_get_contents($url);$crawler = new Crawler();$crawler->addHtmlContent($response);$data = [];try {//使用crawler进行页面内容分析$content = $crawler->filterXPath('//ul[contains(@class,"conte_heliu_ul")]')->text();$imgSrc = $crawler->filterXpath('//img')->extract(array('src'));$name = $crawler->filterXPath('//ul[contains(@class,"conte_heliu_ul")]/li')->each(function (Crawler $node, $i) use (&$data) {$item = $node->filterXPath('//div/span')->text();$city = $node->filterXPath('//span')->text();return $city . '-' . $item;});$userName = implode(',', $name);$imgUrl = str_replace('../', '', $imgSrc[0]);$url = str_replace('3g/', '', $this->baseUrl);$fileUrl = '';if (!empty($imgUrl)) {$fileUrl = $url . $imgUrl;}$data = ['content' => $content,'userName' => $userName,'img' => $fileUrl,];} catch (Exception $e) {$output->writeln('error ');}

use Symfony\Component\DomCrawler\Crawler;function run()
{//伪造浏览器UA$headers = ['user-agent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',];$client = new Client(['timeout' => 20,'headers' => $headers]);//发送请求获取页面内容$response = $client->request('GET', $url)->getBody()->getContents();$data = [];$crawler = new Crawler();$crawler->addHtmlContent($response);//使用crawler进行页面内容分析try{//这里使用的是xpath语法,轮询forFlow子类day中的元素,既页面上每一篇文章的块状元素,并且进行内容获取$crawler->filterXPath('//div[contains(@class, "forFlow")]/div[contains(@class, "day")]')->each(function(Crawler $node, $i) use (&$data){$item = ['date' => $node->filterXPath('//div[contains(@class, "dayTitle")]/a')->text(),'title' => $node->filterXPath('//div[contains(@class, "postTitle")]/a')->text(),'abstract' => $node->filterXPath('//div[contains(@class, "postCon")]/div')->text(),'url' => $node->filterXPath('//div[contains(@class, "postCon")]/div/a')->attr('href'),];$data[] = $item;});}catch (\Exception $e){echo $e->getMessage() . PHP_EOL;}//打印结果print_r($data);
}

使用 Symfony DomCrawler 进行爬虫 已解决相关推荐

  1. 已解决pandas创建DataFrame对象失败

    已解决(pandas创建DataFrame对象失败)ValueError: Shape of passed values is (1509, 1), indices imply (1509, 2) 文 ...

  2. 已解决IndexError: list index out of range

    已解决(Python爬虫遍历列表报错)IndexError: list index out of range 文章目录 报错代码 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 ...

  3. 已解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“:

    已解决(pip安装pyhanlp模块报错)error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Micr ...

  4. 已解决NameError: name ‘unichr‘ is not defined

    已解决(Python3报错)NameError: name 'unichr' is not defined 文章目录 报错代码 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 ...

  5. 已解决ModuleNotFoundError: No module named ‘Workbook‘

    已解决(python xlwt库写入Excel表格报错)ModuleNotFoundError: No module named 'Workbook' 文章目录 报错代码 报错翻译 报错原因 解决方法 ...

  6. 已解决(Python语法报错)SyntaxError: invalid syntax

    已解决(Python语法报错)SyntaxError: invalid syntax 文章目录 报错信息 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错信息 粉丝群里面一 ...

  7. 已解决SyntaxError:expected ‘:‘

    已解决(Python语法错误)SyntaxError:expected ':' 文章目录 报错代码 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错代码 粉丝群里面的一个粉 ...

  8. 已解决MySQL 服务无法启动。

    已解决MySQL 服务无法启动. 文章目录 报错代码 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错代码 粉丝群里面的一个小伙伴安装完MySQL数据库以后,想启动MySQL服务器, ...

  9. 已解决requests.exceptions.ConnectTimeout: HTTPConnectionPool(host=‘123.96.1.95‘, port=30090): Max retri

    已解决requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='123.96.1.95', port=30090): Max retri ...

最新文章

  1. qt qml scrollbar 移动APP风格的滚动轴
  2. 微软SQL Server数据库的两种请求游标
  3. latex multicolumn_LaTeX入门(3)
  4. MyBatis入门(二)---一对一,一对多
  5. 大数据学习(2-1)-Hadoop安装教程-单机模式和伪分布模式(Ubuntu14.04LTS)
  6. Oracle收购后的Mysql目标市场
  7. python画画零基础_Python获取英雄联盟皮肤原画:新手玩家们都懵了!
  8. DotNetNuke 04.05.05 安装
  9. 广州找工作指南:避雷公司名录及优秀公司名录
  10. 【入门篇】ESP8266直连智能音箱(天猫精灵)控制智能灯
  11. iOS 地图导航路线规划详解
  12. SharePoint中在线编辑文档
  13. DGUS组态软件组中的图标变量显示如何使用
  14. 2017年10月23日提高组T2 灵知的太阳信仰 单调队列优化dp
  15. wheeltec移植到ubuntu18.04
  16. 【设计模式7】代理模式
  17. pdf怎么样编辑标注工具
  18. 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest G - Gangsters in Central City
  19. BUUCTF Reverse helloword、findit
  20. 如何让一个函数返回多个返回值

热门文章

  1. C#打印小票(连续自动打印)
  2. sncr脱硝技术流程图_SNCR脱硝工艺介绍.ppt
  3. Android破解锁屏密码(已root)
  4. (专升本)数字多媒体技术基础(图形/图像处理软件)
  5. 【分享】QY-IMX8M主板简介
  6. 合合信息CV算法岗在线笔试题目回忆
  7. Cmake 编译opencv缺少出现下载ffmpeg
  8. 喜报携手钉钉构建统一移动报销与沟通协同平台
  9. AR路由器web界面每IP限速配置方法
  10. emp和emn是什么文件_导出EMN,EMP文件的问题