前几天,被老板拉去说要我去抓取大众点评某家店的数据,当然被我义正言辞的拒绝了,理由是我不会。。。但我的反抗并没有什么卵用,所以还是乖乖去查资料,因为我是从事php工作的,首先找的就是php的网络爬虫源码,在我的不懈努力下,终于找到phpspider,打开phpspider开发文档首页我就被震惊了,标题《我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 》,果然和我预料的一样,php就是世界上最好的语言。废话少说,下面开始学习使用。

首先看的是提供的一个demo,代码如下:

$configs = array(
'name' => '糗事百科',
'domains' => array(
'qiushibaike.com',
'www.qiushibaike.com'
),
'scan_urls' => array(
'http://www.qiushibaike.com/'
),
'content_url_regexes' => array(
"http://www.qiushibaike.com/article/\d+"
),
'list_url_regexes' => array(
"http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
),
'fields' => array(
array(
// 抽取内容页的文章内容
'name' => "article_content",
'selector' => "//*[@id='single-next-link']",
'required' => true
),
array(
// 抽取内容页的文章作者
'name' => "article_author",
'selector' => "//div[contains(@class,'author')]//h2",
'required' => true
),
),
);
$spider = new phpspider($configs);
$spider->start();

每项具体的信息,可以去 https://doc.phpspider.org/demo-start.html 查看,哪里比较详细,这里只说下我走的弯路,

domains是定义采集的域名,只在该域名下采集,
content_url_regexes是采集的内容页,使用chrome查看网页源码,然后使用selector选择器定位,selector使用xpath格式定位参数,当然也可以用css来选择。
list_url_regexes列表页,每个列表页抓取多条content_url_regexes的url循环采集。
还有一些其他参数没有列出来,例如:
 'max_try' => 5,
'export' => array(
'type' => 'db',
'conf' => array(
'host' => 'localhost',
'port' => 3306,
'user' => 'root',
'pass' => 'root',
'name' => 'demo',
),
'table' => '360ky',
),
max_try 同时工作的爬虫任务数。
export采集数据存储,有两种格式,一种是写到数据库中,一种是直接生成.csv格式文件。
只要url规则写的对,就可以运行,不用管框架里面的封装。当然,此框架只能在php-cli命令行下运行,所以使用前要先配置环境变量,或者cd到php安装路径运行。
最后成功采集到大众点评某点的一千多条数据。

最新文章

  1. 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复
  2. bzoj[1087][SCOI2005]互不侵犯King
  3. [IOS 开发]TableView如何刷新指定的cell 或section
  4. 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)
  5. LINUX运维实战案例之文件已删除但空间不释放问题的分析与解决办法
  6. php的错误级别
  7. 续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
  8. Go语言参数中的三个点是干什么的
  9. JSP学习初体验
  10. 关于C#虚函数和构造函数的一点理解
  11. APUE读书笔记-第18章-终端I/O
  12. Maven浅析-1
  13. jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗
  14. Linux主机上发布java web应用
  15. switch case多值匹配
  16. 【WCF系列】(二)设计和实现服务协定
  17. 【阿里聚安全·安全周刊】Python库现后门 可窃取用户SSH信息|Facebook再曝300万用户数据泄露
  18. 洛谷 P1443 马的遍历
  19. 2018-11-13 中文代码示例之Programming in Scala学习笔记第二三章
  20. Centos7 ping 未知的名称或服务 DNS 配置问题

热门文章

  1. [ext4]磁盘布局 - group分析
  2. 开始更新webpack踩坑笔记
  3. 关于制作C语言头文件的思考
  4. linux网络设置和虚拟机克隆转移之后Error:No suitable device found:no device found for connection 'System eth0'问题解决
  5. angular2项目添加ng2-bootstrap
  6. Docker - 终端交互
  7. ActiveXObject函数详解(转自http://eyesinthesky.iteye.com/blog/1560033)
  8. 利用Sinopia搭建私有npm包
  9. hadoop进不去web界面
  10. Node.js编写CLI的实践