爬虫入门

课程准备工作

虚拟机—Vmware/Virtualbox _ ubuntu操作系统

开发:windows系统进行开发

ubuntu操作系统运行爬虫程序

技术准备:

PYTHON面相对象的程序设计开发

HTML网页(设计)开发

CSS了解即可

JavaScript熟悉

其他需要掌握的爬虫技术

所有编程语言都是相通的!

主要内容

爬虫概述:了解什么是爬虫

爬虫优势:知道爬虫用在什么地方

爬虫实现方式:了解实现爬虫用到的各种技术

爬虫的分类:了解爬虫工作相关的一些(不同爬虫)区别

第一个操作程序:采集新浪社区新闻首页数据

爬虫请求操作:伪造请求[技术实现]

爬虫请求操作:模仿用户行为[社会工程学]

爬虫请求操作:请求隐藏[代理]

课程内容

软件安装

python2.7开发环境

pycharm开发工具

虚拟环境:virtualenv

每个项目一个独立的虚拟环境

方便项目部署时收集开发环境中的模块:pip freeze>pkg.list

什么是爬虫[爬虫概述]

爬虫:Spider

爬虫-> 蚂蚁下载软件 | 迅雷下载| ..

小脚本程序,从网络上采集要下载的数据的资源->完成高速下载

爬虫-> 度娘、谷哥..搜索引擎

搜索引擎-> 采集数据的程序-> 从网络上搜索数据提供给搜索引擎使用

百度-> 关键词-> 包含该关键词的所有网页

公司|企业数据进行深度分析-> 数据挖掘-> 大数据-> 大量的数据处理

大量的数据从哪里来?

数据的重要性

软件:用来解决生活中的问题!

解决生活中的问题,核心思想?

核心:处理数据!

操作:增删改查[CRUD]


数据从哪里来?

数据:都是从生活中来的!

生活中的数据,怎么到自己需要的地方[数据库]

手工采集:可以采集数据,但是操作效率低下

内部数据:公司内部数据,权限范围内尽情使用!:数据有限、较强的针对性

数据交易:数据采集迅速、费用较高;-- 数据不能定制化!

爬虫采集:定向数据采集;成本较高、数据定制化很强、数据针对性很强

搜索引擎:不是我们的重点!

定向爬虫:我们工作的重点!-- 开启了保护和反保护的斗争

爬虫[采集数据]和反爬虫[防止恶意采集数据]


2. 爬虫的采集方式——分类

通用爬虫:一般用在搜索引擎中:针对所有数据进行广泛采集[广度]

搜索引擎作为爬虫~必须遵守爬虫采集数据的约定协议

民间组织约定的爬虫采集数据协议:ROBOT协议

爬虫:好的一面~可以将自己的网站让更多的人通过搜索引擎访问~网络流量分流

ROBOT协议:是一种约定的规范;针对通用爬虫进行的数据采集限制

聚焦爬虫:也成为定向爬虫,针对目标数据进行定向数据采集[深度]

每个数据采集任务,都可能要开发一套新的项目 :程序开发密集度

数据采集定向采集[在不违反中华人民共和国宪法的前提下]可以针对任何数据进行采集(一般正规的公司安排的数据采集任务基本都是合法的->公司承担责任):数据定向性

技能要求:上手快,入门简单,对数据的分析要求较高!

工作的重点:聚焦爬虫;工作的核心:采集数据;


PS:爬虫~是通过程序的方式,自动采集数据;程序操作比自然人的操作效率高出很多很多倍;所以如果一旦通过无限制的爬虫对网站发起请求,[爬虫的频繁请求让服务器资源迅速消耗,最终导致服务器内存不存或者其他后果!],网站很容易DDOS

DDOS[拒绝服务攻击]

3. 关于历史数据的处理

百度搜索-> 爬虫采集了网络中的大部分网站的数据-> 其他人通过搜索网站,可以直接在搜索页面中进入指定的网站

PS:某个网站进行了更新,百度以前搜索到的页面数据变化了!数据不一致~

百度爬虫对原来采集过的数据要实时进行更新

增量爬虫:需要实时对历史采集数据进行更新[历史数据会发生变化]


股票数据采集-> 采集了过去10年每一个交易日的股票历史数据,方便对未来的数据进行分析处理

PS:需要对历史数据进行更新吗?

累积爬虫:历史数据不会发生变化,一旦数据执行完成,数据就是固定的


程序开发:第一个爬虫程序

开发环境:python2.7

开发工具:pycharm

python2和python3区别

编码:Python2使用的是ascii编码;python3使用的是unicode编码

UTF-8 -> unicode trasfer format 8bit 主持中文

ascii -> 不支持中文-> ANSI->扩展ANSI->..


表示英文->1个字符->2个字节->16位

表示汉字->2个字符->4个字节->32位->国家标准编码GB2312->GBK->GB18030


英文-中文,编码方式可能不同,就会造成乱码的问题!

解决乱码的问题-> 不论什么字符->转换成字节->按照指定的编码转换成字符


开始开发:

python2使用的是ascii编码,所以源代码文件都不支持中文

源代码代码中第一行的位置,添加支持中文的注释

# -*- coding:utf-8 -*-

# coding:utf-8

# ..


为什么要使用python2

python主要的版本1.x,2.x,3.x

目前web市场主流版本:3.x[网站开发-文本字符数据的交互,配合二进制文件的处理,更多的会使用到的比较通用的unicode字符]

爬虫工作主流版本:2.x[都是从网络上采集数据,采集的数据文本数据、二进制数据,为了方便并且统一的进行采集数据的处理,使用python2操作更加灵活]Python2在爬虫方向支持的第三方模块更多!


程序开发

采集到新浪网网页数据

有用?采集首页中各个模块的链接地址和名称,方便进行该模块二次数据采集

没用?其他数据~不需要


采集网页的源代码,为什么要用爬虫程序?鼠标右键查看源代码可以完成!

为什么要用爬虫{爬虫的优势?!}

有那么多的工具[迅雷、旋风、百度云、整站下载工具等等],为什么要用爬虫!


最近上映了妇联3->要看这部电影,怎么办?--下载工具

最近要看一本小说->[阴阳师]-> 怎么办?--搜索引擎-搜索资源-下载工具

要获取某个网站上的大部分电商商品[名称、价格、描述]->怎么办-爬虫程序自动采集

要获取多个新闻网站上,最近1个月的所有新闻数据[标题、发布时间、编辑人、内容]->怎么办——爬虫程序自动采集


爬虫程序—发送请求给服务器,获取服务器的数据

爬虫程序~发送的请求什么样的?Spider Request

浏览器程序~发送的请求什么样的?Browser Request


这两个请求,有什么区别?

了解清楚有什么区别~才能掌握好爬虫程序的请求[伪装浏览器请求]


(1) 抓包工具

网络上流行的抓包工具有很多,wareshark、burpsuits、fiddler、F12窗口


浏览器发送的请求:F12窗口,直接查看请求信息


程序发送的请求:怎么看PYTHON爬虫程序发起请求的信息


了解请求程序发送请求和浏览器发送请求的区别:才能更加完美的伪造请求


(2) 请求伪造

请求对象:获取一个请求对象,通过请求对象设置用户代理[User-agent]请求头

    请求头中的K=V数据:K键值~单词首字母必须大写


请求对象:urllib2.Request对象

通过对urllib2.Request对象的设置,完成请求的伪造操作


隐藏用户:使用代理IP进行请求操作

正向代理:代理客户端发起请求,向服务器请求数据;隐藏客户端信息

反向代理:代理的服务端;隐藏真实服务器信息

都有什么样的代理:免费代理、收费代理-- [透明代理|匿名代理|高匿代理]


python爬虫中,怎么使用这些代理

默认情况下,urllib2爬虫程序直接通过urlopen()发送请求!

查询对应的资料[官网资料|总结的资料|国外资料]

查看底层代码,模仿还原



1.爬虫的理论知识

a)什么是爬虫?

b) 爬虫的分类

i. 通用爬虫VS 聚焦爬虫

ii. 累积爬虫VS 增量爬虫

c) 爬虫的实现

i.Java|Python|PHP|C++|C#|Ruby|Delphi|..

ii. python:更加专业

iii. urllib2基础->requests->scrapy->分布式

2.爬虫的操作

a) urllib2底层数据采集urlopen()函数

b) 伪造请求:伪装浏览器请求

i. 请求对象:请求头数据、请求体数据、请求方式..

ii. 请求头中的User-agent设置,完成浏览器请求的伪装

iii. 请求对象:urllib2.Reuqest对象

c) 模仿用户行为:只有在特殊的情况下才会使用

i. 随机休眠严重影响爬虫采集数据的效率

d) 隐藏客户端:使用IP代理,代理真实客户端完成对服务器数据的访问

i.免费代理|收费代理

ii.正向代理[代购]|反向代理[代理商]

iii. urlopen底层操作

1. 操作对象:urllib2.ProxyHandler({..})

2. 开锁对象:urllib2.build_opener(handler)

3. 发送请求:res = opener.open(url)!

b)采集百度图片[越多越好!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 文章图片上传不正常,如需文档,可联系微信:1017429387 目录 1 安装... 4 1.1 配置探针... ...
    Mrhappy_a7eb阅读 6,284评论 0 5
  • 单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,散列计算过程是单向的,即不...
    杰哥长得帅阅读 796评论 0 0
  • 你喝白粥么。 鈡晓晓下班回来的路上买了两斤葡萄,等她兴致勃勃地洗完,一颗一颗剪下来放进水果盘中,然后迫不及待地吃进...
    小夙Sky阅读 206评论 0 0
  • 一、jmeter接口测试关键参数 进行接口测试,那必须先得具备接口测试文档,一般由开发产出,在接口文档中主要关注以...
    熊熊爱吃青菜阅读 1,781评论 0 4