Python数据抓取(1) —数据处理前的准备

栏目: Python · 发布时间: 8年前

内容简介:Python数据抓取(1) —数据处理前的准备

(一)数据抓取概要

  • 为什么要学会抓取网络数据?

    • 对公司或对自己有价值的数据,80%都不在本地的数据库,它们都散落在广大的网络数据,这些数据通常都伴随着网页的形式呈现,这样的数据我们称为非结构化数据

    • 如果我们能想出办法,把这些非结构化的数据转化为结构化的数据,在跟自己的本地数据库做匹配,做交叉分析,让它们关联起来,从而我们就能提炼出我们需要的有价值的数据。

  • 如何将非结构化的数据转化为结构化的数据呢?

    • 必须通过ETL的方法(数据抽取,转化、存储)

(二)抓取的逻辑—ETL

ETL是什么?

  • ETL是三个英文单词的缩写

    • E:Extract (数据抽取)

    • T:Transformation(数据转换)

    • L:Loading(数据储存)

(三)数据抓取前的准备

1.“网络爬虫”架构

  • 网络爬虫概要

    • 网络爬虫不是一个新技术,自从网络时代开始,就有大量的人来撰写网络爬虫来获取资讯,比如说我们熟知的搜索引擎百度、谷歌等,它们最原始的技术就是网络爬虫技术。

    • 大数据时代,这个“古老”的技术,又被重新重视起来

  • 网络爬虫构架

Python数据抓取(1) —数据处理前的准备

2、如何理解“网络爬虫”架构

对量化投资策略进行研究,第一步就是获取我们需要的数据,在工作实践中,比较实用的数据源就是新浪财经的数据,下面我们以新浪财经为例,为大家梳理下网络爬虫的构架

我们用谷歌Chrome浏览器,打开新浪财经的股票博客板块 http://blog.sina.com.cn/lm/stock/ ,这个Chrome浏览器就是网页链接器,当我们初入网址的时候,我们就会发出一个请求到新浪财经股票博客的网页上,网页收到请求以后就会把回应回传回来

我们在细看股票博客的页面,是花花绿绿的,除了内容和文字,还有图片和广告,当我们按下链接以后,想知道到底发生了什么事,我们可以透过Chrome的开发人员 工具 去观察这件事情。

3、以抓取一个网页的内容为目的,如何去观察一个网页

我们有新浪财经的股票博客信息,我们该如何把这些信息,包含标题和时间抓取出来?

(1)使用开发人员工具观察

  • 开发人员工具在IE,在Chrome都有,这里jacky推荐功能更为齐全的Chrome;

  • 点击所在网页的右键,选择检查,在开发人员工具下找到Network

    • 如果Network里没有内容的话,可以点击网页重新加载

Python数据抓取(1) —数据处理前的准备

  • 可以把Network当作一个网络窃听器,它可以监听我们送出什么请求,等到什么回应;

(2)观察Requests的构成

  • 点击Filter(漏斗型)

Python数据抓取(1) —数据处理前的准备

  • 本案例中,我们一共发出了106个requests,这些requests,包含XHR,JS,CSS,等

    • XML是什么?见下图

    • ajax是什么?ajax的全称是AsynchronousJavascript+XML;异步传输+js+xml;所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果我们可以再来处理这个事。直白地说,就是没用AJAX的网页,你点一个按钮就要刷新一下页面,尽管新页面上只有一行字和当前页面不一样,但你还是要无聊地等待页面刷新。用了AJAX之后,你点击,然后页面上的一行字就变化了,页面本身不用刷。AJAX只是一种技术,不是某种具体的东西。不同的浏览器有自己实现AJAX的组件。

    • XHR:就是XMLHttpRequest 对象,换句话说就是ajax功能实现所依赖的对象;

Python数据抓取(1) —数据处理前的准备

    • JS:让我们跟网页互动的程序;

    • CSS:网页的“化妆品”;

    • Img:载入的图片;

    • Media:影音数据;

    • Font:文字;

    • Doc:网页资料;

    • WS:websocket;

    • Manifest:宣告;

通常来讲,文章和新闻会放在Doc下,接下来我们要抓取的链接就藏在106个链接中的某个链接;

(3)观察HTTP请求与返回内容

我们可以在Document下找到文章与新闻类的内容,为什么呢?因为只要是上述类型内容的网页,它们都有被搜索引擎搜索到的需求,对于搜索引擎来讲,对Document的内容是最好的,所以绝大部分情况下,我们只要找到Document下的第一个链接,都可以准备的把文章与新闻类的内容爬取下来;只有极少部分才会看XHR还有其他的部分;下面,jacky(数据分析部落公众号:shujudata)分享一下实际的操作;

  • 依次点击Network:arrow_right:Doc:arrow_right:stock/:arrow_right:Response

Python数据抓取(1) —数据处理前的准备

  • 确定我们要抓取的内容在stock/链接下,而不是在其他链接里

    • 首先快速浏览检查我们要抓取的内容在不在Response中,可以在网页的文章中比对关键词,如何网页内容巨大,可以把它们贴在txt中,使用查找比对;

  • 确定网页的存取方法

    • 我们可以把 get的方法,想象成邮寄的信,网址的信息就写在“信封”上,我们送出的http请求就像把信邮寄出去一样,当网页的链接器看到这封信,了解我们的来意以后,此时就可以把对应的回应回传回来;接下来,我们该怎样写一个程序去模拟我们的浏览器送出get请求的过程呢?这时我们就要用到 python 了,

    • 在Headers中,我们看到网页是用get方法做存取的

    • 什么是get方法?该如何理解get方法?

以上,我们观察网页后,我们会发现对应Response下的资料数据都放在html的页面里面,html包含着网页的标签 < div >,这些标签叙述着网页的行为,我们得到的回应是html,包含它的资料数据以及它的标签,这样的资料并不是结构化的资料,我们还需要进一步处理,那么如何把非结构性的数据处理为结构化的数据呢?请参阅jacky的第二次分享,谢谢大家!

End.

作者:润禄数据jacky (中国统计网特邀认证作者)

本文为中国统计网原创文章,需要转载请联系中国统计网 (小编微信:itongjilove) ,转载时请注明作者及出处,并保留本文链接。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

刷屏

刷屏

[美] 凯文•阿洛卡 / 侯奕茜、何语涵 / 中信出版社 / 2018-10-1 / 68.00

1. YouTube流行趋势经理,解密如何打造爆款视频 在视频时代,制造互动,才能创造潮流 用户不再是被动的观众,而是主动的传播者 2. 《刷屏》以行内人视角解读: 病毒视频 粉丝经济 网红产业 平台如何为内容创作者赋能 3. 你是否常常被病毒视频刷屏?你是否觉得很多网红火爆到“无法用常理解释”? 视频时代已经到来,我们每天观看网络......一起来看看 《刷屏》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具