Chinaunix首页 | 论坛 | 博客
  • 博客访问: 507502
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: Python/Ruby

2017-11-16 17:55:29

【前言】

使用 scrapy爬虫框架,进行对百度搜索数据进行爬取,对于爬取的数据分3个方向进行存储,分别是:存储到json文件中,存储到mongodb数据库中,存储到mssql数据库中。并对抓取的数据进行简要的数据分析。

本文只供参考学习目的,对于实际情况中请遵守相关规定,并尊重robot.txt中的内容。

【正文】

爬取前的页面分析:

打开百度搜索页面,并查看网页源代码,问题便出现,无法查看到页面源代码,如下,只是返回一个状态说明,这时可以确定页面数据是动态生成,常规的爬取行不通。image001.png

在浏览器中进行调试分析,可以发现需要定位使用的html元素,通过这一步至少可以将以下两个元素的XPATH或CSS Selector的表达式求解出来。

image002.png

制定爬取方案

既然搜索页面的内容是动态生成,常规的http请求后无法获取数据,针对这种问题的解决方法:

l  通过抓包工具,进行对http请求进行分析,找到实际数据请求的js代码后进行模拟请求获取数据,这种方法耗时耗力,且是无法适应页面更改的情况。

l  通过浏览器框架请求,并编写程序和浏览器通信获取数据分析,对于这种方法的选择有很多,如在windows上可以使用IE Browser控件,其他的可以使用其他内核的浏览器,这种方法的缺点是速度较慢。

l  这里选取的方法是使用 Selenium + Phantomjs的方法,这个结合scrapy也算是较为经典的一种方法。并且 Selenium + Phantomjs 也是作为Web应用程序进行自动化测试的一套方案。

Selenium : Selenium 是一个用于Web应用程序测试的工具,可以搭配主流浏览器进行使用,如 IE ,Chrome ,Firefox等

Phantomjs:一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。

编写爬虫代码

开始实际编写代码前,对爬取步骤的梳理。

自动填写搜索关键字– 自动触发搜索功能–抓取页面搜索数据(不包含广告推广项)–分页跳转…..

image003.png

进行分页跳转,即需要自动触发下一页事件执行。

image004.png

 关键代码:

实例化浏览器

image005.png

输入关键字并进行查找,对关键字“IT教育”进行搜索

image006.png

对第一页右边栏的“相关机构”(如下图)进行抓取(首先需要触发“展开”事件)

image007.png

相关代码为:

image008.png

抓取页面数据,并调整到下一页

image009.png

image010.png

分析数据

经过抓取,共抓取了76页,抓取的数据如下:

Json文件

image011.png

数据库

image012.png

对抓取数据进行关键字提取,并制作对应的标签云,得到的标签云图为.分析工具为python,通过jieba分词和pycloundtag两个模块进行

image013.png

分析搜索“IT教育”得到结果得出的初步结论,出现次数较多:

城市: 北京 深圳 杭州 武汉 长沙 等

机构: 北大青鸟 达内 传智播客 等

语言: java php html5 等

接下来将进行招聘网站信息爬取,并结合使用SSAS进行数据分析,目前抓取以完毕,并在数据库中有21w行数据。

 

阅读(1476) | 评论(0) | 转发(0) |
0

上一篇:浅谈Java8新特性

下一篇:使用DISM卸载补丁

给主人留下些什么吧!~~