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

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

内容简介: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) ,转载时请注明作者及出处,并保留本文链接。


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

查看所有标签

猜你喜欢:

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

Linux 系统编程(第二版)

Linux 系统编程(第二版)

Robert Love / 东南大学出版社 / 2014-1-1 / 78

如何编写那些直接依赖于Linux内核和核心系统库提供的服务的软件?通过《Linux系统编程(第2版)(影印版)》,Linux内核参与者RobertLove(洛夫)为你提供了Linux系统编程方面的教程,Linux系统调用的参考手册,以及对于如何编写更聪明和更快的代码的来自内部人士的建议。Love清晰地指出了POSIX标准函数和Linux特别提供服务之间的差异。通过关于多线程的新章节,这本修订和扩展......一起来看看 《Linux 系统编程(第二版)》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具