数据分析06|数据采集

数据采集

巧妇难为无米之炊。没有数据支撑一切都是空想。

彼得德鲁克说过,对于一项业务如果不能衡量它,那就无法实现有效增长。衡量的本质就是量化思维,数据则是实现量化的主要手段和结果。

数据(英语:data),是指未经过处理的原始记录。一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,它可能是一堆的杂志、一大叠的报纸、数种的开会记录或是整本病人的病历纪录。数据描述事物的符号记录,是可定义为意义的实体,涉及事物的存在形式。是关于事件之一组离散且客观的事实描述,是构成消息和知识的原始材料。

信息是有价值的数据,知识是体系化的信息。两者的基础都是数据,正如wiki百科所讲,数据是两者的原始材料。

那么,数据从哪儿来呢?

数据来源有主要有:开放数据源、爬虫抓取、日志采集以及传感器。其中爬虫抓取使我们平时接触最多的,但也不要轻易忽略其他三个来源。开放数据源来自政府、企业、高校等单位,如统计局公布数据、企业年鉴,或者金融、能源等行业,如行业年报。日志采集目前多应用于消费互联网企业,而传感器随着物联网的发展将在数据采集方面占据一席重要地位。
在这里插入图片描述

Python爬虫

练习项目:编写Python代码实现自动化下载周星驰海报

爬虫主要包括三个阶段,即打开网页、提取数据和保存数据。

Requests访问页面

import requests

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

XPath定位

XPath是XML的路径语言,通过元素和属性进行导航帮我们定位位置,常见的路径表达方式有以下8种:

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

举例说明:

1.xpath(‘node’)选取了node节点的所有子节点;

2.xpath(’/div’)从根节点上选取div节点;

3.xpath(’//div’)选取所有的div节点;

4.xpath(’./div’)选取当前节点下的div节点;

5.xpath(’…’)回到上一个节点;

6.xpath(’//@id’)选取所有的id属性;

7.xpath(’//book[@id]’)选取所有名为id的属性的book元素;

8.xpath(’//book[@id=“abc”]’)选取所有book元素,且这些book元素拥有id="abc"的属性

9.xpath(’//book/title|//book/price’)选取book元组的所有title和price元素

使用XPth定位,需要导入lxml库,调用HTML解析命令,然后再对HTML进行XPath函数的调用

# 定位到HTML中的所有列表项目

from lxml import etree
html = etree.HTML(html)
result = html.xpath('//li')

JSON对象

利用JSON库可以使用JSON对象和Python对象的相互转换,通过将JSON对象转换成Python对象来进行数据解析.方法json.dumps()可以实现Python转JSON,方法json.loads()可以实现JSON转Python

import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
input = json.loads(jsonData)
print (input)

output:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

利用JSON数据自动下载周星驰图片

首先把我们的日常操作步骤整理下:

1.打开网页

2.输入关键词"周星驰"

3.在搜索结果页中选择图片

4.下载图片页中的所有海报

这里需要关注的是,如果爬取的页面是动态页面,就需要关注XHR数据.因为动态页面的原理就是通过原生的XHR数据对象发出HTTP请求,得到服务器返回的数据后进行处理显示,XHR会用于在后台与服务器交换数据.可以利用Chrome浏览器中的开发者工具。

import json
import re
import os
import requests

# 创建图片存储文档
query = '周星驰'
path = os.getcwd()
picpath = path + '/' + query # 图片存储位置文件夹
print(picpath)
if not os.path.isdir(picpath):  # 没有该文件夹则创建一个
    os.mkdir(picpath)


# 创建下载函数
def download(src, id):
    dir = picpath + '/' + str(id) + '.jpg'
    try:
        pic = requests.get(src, timeout=10)
    except requests.exceptions.ConnectionError:
        print(id + '图片无法下载')
    fp = open(dir, 'wb')
    fp.write(pic.content)
    fp.close()


# 抓取图片地址与id
for i in range(0, 2000, 20):
    url = 'https://www.douban.com/j/search_photo?q=' + query + '&limit=20&start=' + str(i)
    html = requests.get(url).text
    response = json.loads(html,encoding = 'uft-8')
    print('已下载' + str(i) + '张图片')
    for image in response['images']:
        image['src'] = image['src'].replace('thumb', 'l')
        print(image['src'])
        download(image['src'], image['id'])

Python爬虫概述导图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值