数据采集及采集工具八爪鱼的使用

数据采集及采集工具八爪鱼的使用

一个数据的走势是由多个维度影响的,因此我们需要通过多源的数据采集,尽可能收集到更多的数据维度,公司保证数据质量,才能得到高质量的数据挖掘结果。

数据源分类:
  1. 开放数据源:政府、企业、高校等
  2. 爬虫获取:网页、APP等
  3. 日志收集:前端采集、后端脚本等
  4. 传感器:图像、测速、热敏等
开放数据源:
  • 可以从两个维度来考虑,一个是单位的维度,比如政府、企业、高校;一个就是行业维度,比如交通、金融、能源等领域。
爬虫获取:
  • Python爬虫三个过程:

    1. 使用requests爬取内容,可以用其来抓取网页信息。
    2. 使用xpath解析内容。XPath是一种用来确定 XML 文档中某部分位置的语言,在开发中经常用来当作小型查询语言。XPath可以通过元素和属性进行位置索引。
    3. 使用 Pandas 保存数据。pandas可以保存爬取的数据写入到xls或MySQL等数据库中。
  • 常用网页信息抓取工具:

    1. [火车采集器]http://www.locoy.com/

    2. [八爪鱼]https://www.bazhuayu.com/

    3. [集搜客]http://www.gooseeker.com/index.html

日志采集:
  • 日志采集最大的作用,就是通过分析用户访问情况,提升系统的性能,从而提高系统承载量。及时发现系统承载瓶颈,也可以方便技术人员基于用户实际的访问情况进行优化。
  • 日志采集可分为两种形式:
    1. 通过web服务器采集
    2. 自定义采集用户行为
  • 埋点是日志采集的关键步骤,其是在有需要的位置采集相应的信息进行上报。
  • 在需要统计数据的地方植入统计代码。
  • 有助于了解用户的操作数据,适用于运维监控、安全审计、业务数据分析等场景。
  • 一般web服务器自带日志功能,也可以使用flume从不同服务器集群中采集、汇总和传输大容量的日志数据。
采集用具八爪鱼的使用:
  • 八爪鱼采集分为三步:
  1. 输入网页
  2. 设计流程
  3. 启动采集
  • 流程步骤可分为基本步骤和高级步骤

  • 基本步骤分别是打开网页、点击元素、循环翻页、提取数据

    1. 打开网页:所有的采集默认第一项都是打开网页,在新建任务并输入网址后,八爪鱼会自动建立一个打开网页流程。
    2. 点击元素:这里元素的定义比较广泛,它可以是某个按钮,或者某个链接,也或者是某个图片或文字。使用这个步骤是你在搜索或者提交某个请求。当你点击元素后,八爪鱼会提示你想要达到的目的:点击该按钮、采集该元素文本、还是鼠标移到该链接上。然后再选择“点击该按钮”进行确认即可。如果我们点击某个元素的目的是循环翻页,或者提取数据,那么在点击之后,八爪鱼会确认你的目的,你只要点击相关的按钮即可。
    3. 循环翻页:很多数据都存在翻页的情况,通常你需要找到翻页的位置,比如网页底部的“下一页”按钮,点击它,会提示你“循环点击下一页”、“采集该链接文本”还是“点击该链接”。你需要确认这里是进行的“循环点击下一页”。
    4. 提取数据:在网页上选择你想要提取的页面范围,鼠标移动到页面上会呈现蓝色的阴影面积,它表明了你想提取的数据范围。然后点击鼠标后,在右侧选择“采集数据”即可。
  • 高级步骤包括输入文字、验证码识别、下拉选项、判断条件、移动鼠标到元素上、结束循环、结束流程

Python爬虫流程:打开网页、提取数据和保存数据。
  • 打开网页:可以使用Requests 访问页面,得到服务器返回数据,包括HTML及json。

  • 提取数据:对于HTML,可使用xpath进行元素定位提取数据。

    ​ 对于json,可使用json进行解析。

  • 保存数据:可使用pandas保存数据并导出csv文件。

Requests访问页面:
  • Requests是Python HTTP的客户端库,有两种访问方式:Get和Post。Get把参数包含在url中,Post通过request body来传递参数。

  • Get访问

    r = requests.get('http://www.douban.com')
    

    r为get请求后的访问结果,通过r.text或r.content可获取HTML正文。

  • Post表单传递

    r = requests.post('http://xxx.com', data = {'key':'value'})
    
xpath定位:
  • 其可通过元素和属性来定位位置。

  • 常用路径表达方式:

    表达式 含义
    node 选node节点的所有子节点
    / 从根节点选取
    // 选取所有的当前节点,不考虑位置
    . 当前节点
    父节点
    @ 属性选择
    | 或,两个节点的合计
    text() 当前路径下的文本内容
  • 定位HTML所有列表项目:

    from lxml import etree
    html = etree.HTML(html)
    result = html.xpath('//li')
    
json对象:

利用JSON库可以完成Python对象与json对象之间的转换。

json.dumps() 将Python对象转换成json对象

json.loads() 将json对象转换成Python对象

数据采集及采集工具八爪鱼的使用_第1张图片

你可能感兴趣的:(数据挖掘,数据采集)