一个爬虫的五脏六腑(从入门到入狱)

  • 1.网络爬虫概念
  • 2.爬虫爬取数据的用途
  • 3.http概念
  • 4.常见http请求头
  • 5.请求方式
  • 6. 响应状态码
  • 6.urllib库
  • 7.正则表达式
  • 8.Xpath和lxml库
  • 9.requests库的使用
  • 10.理解json以及python的json库的使用
  • 11.scrapy框架

1.网络爬虫概念

网络爬虫就是模拟客户端(浏览器)发送网络请求,获取响应,并按照自定义的规则提取数据的程序,简单来说,就是发送与浏览器一样的请求,获取与浏览器所获取的一样的数据。

2.爬虫爬取数据的用途

爬虫爬取的数据最常应用于两个方面数据展现和数据分析

3.http概念

http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。

4.常见http请求头

Accept:浏览器可接受的MIME类型。
Accept-Charset:浏览器可接受的字符集。
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
Content-Length:表示请求消息正文的长度。
Cookie:这是最重要的请求头信息之一
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
Host:初始URL中的主机和端口。
If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

5.请求方式

GET和POST,两者的不同
1). Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。

2). Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。

3). Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

4). Get执行效率却比Post方法好。Get是form提交的默认方法。

6. 响应状态码

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。
1) 消息
▪ 100 Continue
▪ 101 Switching Protocols
▪ 102 Processing
2) 成功
▪ 200 OK
▪ 201 Created
▪ 202 Accepted
▪ 203 Non-Authoritative Information
▪ 204 No Content
▪ 205 Reset Content
▪ 206 Partial Content
▪ 207 Multi-Status
3) 重定向
▪ 300 Multiple Choices
▪ 301 Moved Permanently
▪ 302 Move Temporarily
▪ 303 See Other
▪ 304 Not Modified
▪ 305 Use Proxy
▪ 306 Switch Proxy
▪ 307 Temporary Redirect
4) 请求错误
▪ 400 Bad Request
▪ 401 Unauthorized
▪ 402 Payment Required
▪ 403 Forbidden
▪ 404 Not Found
▪ 405 Method Not Allowed
▪ 406 Not Acceptable
▪ 407 Proxy Authentication Required
▪ 408 Request Timeout
▪ 409 Conflict
▪ 410 Gone
▪ 411 Length Required
▪ 412 Precondition Failed
▪ 413 Request Entity Too Large
▪ 414 Request-URI Too Long
▪ 415 Unsupported Media Type
▪ 416 Requested Range Not Satisfiable
▪ 417 Expectation Failed
▪ 418 I’m a teapot
▪ 421 Too Many Connections
▪ 422 Unprocessable Entity
▪ 423 Locked
▪ 424 Failed Dependency
▪ 425 Too Early
▪ 426 Upgrade Required
▪ 449 Retry With
▪ 451 Unavailable For Legal Reasons
5) 服务器错误
▪ 500 Internal Server Error
▪ 501 Not Implemented
▪ 502 Bad Gateway
▪ 503 Service Unavailable
▪ 504 Gateway Timeout
▪ 505 HTTP Version Not Supported
▪ 506 Variant Also Negotiates
▪ 507 Insufficient Storage
▪ 509 Bandwidth Limit Exceeded
▪ 510 Not Extended
▪ 600 Unparseable Response Headers

6.urllib库

掌握urlopen方法和Request对象的使用
相关文章参考





7.正则表达式

此条不详细解说,这里只放一个关于正则表达式学习的网站==》传送门
1)元字符:详见此传送门
2)贪婪与懒惰
3)Python对正则表达式的支持——re模块的使用
a.search 返回Match对象,
b.match
c.findall
d.split
e.sub
f.group(groups)方法如何取分组

8.Xpath和lxml库

1)掌握xpath的使用,能够使用xpath获取节点、属性、内容
详情参见传送门
2)python的lxml库(etree)的使用,能够使用xpath解析网页数据
// 任意地址
/ 绝对位置
/div/a/h2
//div[@id=‘name’] 选取id为name的div的内容
//div[1] 选取第一个div的内容,不存在第零个
//div[starts-with(@id,‘name’)] 以name的id为开头的div
div[contains(@id,‘name’)] 包含name的id为开头的div

9.requests库的使用

快速上手:传送门
1)get和post方法获取网页数据:传送门
requests库是一个常用于http请求的模块,性质是和urllib,urllib2是一样的,作用就是向指定目标网站的后台服务器发起请求,并接收服务器返回的响应内容。
所谓的get方法,便是利用程序使用HTTP协议中的GET请求方式对目标网站发起请求,同样的还有POST,PUT等请求方式,其中GET是我们最常用的,通过这个方法我们可以了解到一个请求发起到接收响应的过程。
post请求方式的使用和get方式并没有很大的区别,本质的区别在于它传递参数的方式并不像get方式一样,通过在url中拼接字段来发送给服务器,他采取了一种相较之下更为安全的操作方式,通过form表单的方式来向服务器传递查询条件。我们同样可以通过浏览器的F12开发者工具或者fiddler抓包工具来看到formdata这个字段,从中获取form表单中的字段信息,很多登录操作就是基于此。
2)如何传递消息头
不考不是重点不整理
3)cookie和session理解并掌握
Cookie和Session都是保存用户状态的机制,又可理解为一种数据结构.Cookie存在客户端(浏览器).
Session存在服务端.
详细讲解

10.理解json以及python的json库的使用

1)理解json的格式
2)json模块的四个方法

a.dumps
b.dump
c.loads
d.load

11.scrapy框架

1)架构
a.Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
b.Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
c.Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
d.Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
e.Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
f.Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。
g.Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎和Spider中间通信的功能组件
2)理解并掌握scrapy基本命令
a.startproject
b.genspider
c.bench
d.shell
e.crawl
3)理解Item、settings、pipeline作用及其使用
4)Linkextractor及其属性

传送门
5)能够使用scrapy爬取数据

一个爬虫的五脏六腑(从入门到入狱)相关推荐

  1. python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  2. 10分钟python爬虫_python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  3. python爬虫实践 —— 一、入门篇

    Scrapy爬虫实践 -- 一.入门篇 前言 一.选择爬虫框架--Scrapy 二.Scrapy安装 1.引入库 2.安装 3.验证 三.Scrapy的第一个爬虫工程 1. 使用框架创建新工程 2. ...

  4. 黑客攻防:从入门到入狱_每日新闻摘要:游戏服务黑客被判入狱27个月

    黑客攻防:从入门到入狱 On Christmas day, 2013, many delighted people opened up new Xbox and Playstation gifts. ...

  5. 黑客是互联网的高危职业,选择不慎,很可能如“他们”一样入门到入狱!

    很多职业,但是属于高危的职业也有很多,在没接触编程之前,或许我们大家会想到,挖煤的工人,以及战地的记者,又或许是各类型的职业.一开始谈到编程,程序员一般都想到秃顶,单身狗,什么的,也别那么早去下结论吧 ...

  6. 网络安全CTF夺旗赛入门到入狱-密码学下篇

    哈喽大家好,我是菜鸡林某.今天给大家带来CTF夺旗赛入门的第一步密码学篇下半部分(干货部分)不了解什么是CTF和密码学的可以看上一篇 传送门: 网络安全CTF夺旗赛入门到入狱-入门介绍篇 网络安全CT ...

  7. Kali从入门到入狱(一):DDos洪水攻击

    Kali从入门到入狱(一):DDos洪水攻击 相信很多小伙伴都知道DDos攻击吧,DDos可以说是最厉害的一种服务器攻击了,今天就教大家,在Kali中运用自带的工具Hping3进行DDos攻击 准备工 ...

  8. Kali学习之从入门到入狱(三)

    Kali学习之从入门到入狱 冒个泡 开篇 1 Linux 常见目录 2 Linux基础命令 2.0 环境变量 2.1 apt-get 安装 2.2 ls ll 和 alias 2.3 花式grep 2 ...

  9. 内网安全学习从入门到入狱-知识-内网基础知识

    内网安全学习从入门到入狱-知识-内网基础知识 文章目录 内网安全学习从入门到入狱-知识-内网基础知识 内网渗透基础 基本的名词介绍 工作组 域 活动目录(AD) DC 域控制器(DC) DNS域名服务 ...

最新文章

  1. mysql查看死锁并杀掉_查看当前进程,或死锁进程,并能自动杀掉死进程_MySQL
  2. 多图 | 600岁“网红”的10亿+营收变现(结尾有彩蛋)
  3. Android Studio常用插件
  4. 安全类链接,https
  5. CentOS/Linux 卸载MATLAB
  6. Windows10和Ubuntu双系统下用windows引导Ubuntu
  7. 【Kafka】Kafka Record for partition topic at offset xx is invalid, cause: Record corrupt
  8. 11kw星三角启动延时几秒_带有延时启动的星角接启动方法
  9. 开源工具软件XMusicDownloader——音乐下载神器
  10. 通过 docker 搭建自用的 gitlab 服务
  11. R-CNN解读+代码梳理
  12. 为什么要放弃 JSP ?
  13. 一个二线城市程序员的昨天、今天和明天【坐标:河北石家庄】
  14. jmeter监控服务器插件jp@gc - PerfMon Metrics Collector报错 Operation timed out
  15. Tkinter(二) | 点击按钮显示图片
  16. 回顾2022! 链上NFT精彩项目大盘点
  17. html遮罩层动画制作,flash简单制作遮罩动画效果
  18. win32 007
  19. Python学习第四篇:利用python抓取英语单词
  20. 点线面的意义_1.点线面三元素在平面构成中的造型意义是什么?

热门文章

  1. 计算机网络功能ppt,计算机网络的组与功能.ppt
  2. vant的时间选择器使用
  3. SNS之同学录网站已死?
  4. 基于深度学习的聊天机器人在网易严选智能客服中的应用
  5. EVIEWS中导入EXCEL表格
  6. X99 sSATA和SATA接口
  7. 编写指数函数 c语言,C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数,...
  8. LTE-TDD HARQ(1)-上行HARQ时序
  9. 是什么,让你过上痛苦又低配的生活?
  10. [转]HijackThis 日志分析—如何识别有害信息