网络爬虫

这篇博客介绍了Python网络爬虫的基础知识,包括HTTP协议、HTTP状态码、URL、HTML和JavaScript基础,以及使用urllib库进行网页抓取的初步应用。
摘要由CSDN通过智能技术生成

                                                                        Python网络爬虫章

1爬虫简介:

•网页爬取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。
•请求网站并提取数据的自动化程序

2.取网页的基础知识-HTTP协议

1. HTTP 协议 简介

超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础

HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起19996月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1

201412月,互联网工程任务组(IETF)将HTTP/2标准提议递交至IESG进行讨论,于2015217日被批准。 HTTP/2标准于20155月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准

HTTP工作过程

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

1)客户端与服务器建立连接

2发送HTTP请求

3)服务器接到请求后,给予相应的响应信息

4)释放连接TCP连接

5客户端接收服务器所返回的信息,浏览器解析并显示网页。

1)浏览器就发送消息给该网址所在的服务器,这个过程叫做HTTP Request

2)服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做HTTP Response

3)浏览器收到服务器的Response信息后,会对信息进行相应处理,然后展示。

HTTP1.0 定义了三种请求方法: GET, POST HEAD方法

HTTP1.1 新增了六种请求方法:OPTIONSPUTPATCHDELETETRACE CONNECT 方法

 

序号

方法

描述

1

GET

请求指定的页面信息,并返回实体主体。

2

HEAD

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

3

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

4

PUT

从客户端向服务器传送的数据取代指定的文档的内容。

5

DELETE

请求服务器删除指定的页面。

6

CONNECT

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

7

OPTIONS

允许客户端查看服务器的性能。

8

TRACE

回显服务器收到的请求,主要用于测试或诊断。

9

PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

 

 

GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求体中.

GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

GETPOST请求在服务端获取请求数据方式不同,就是我们自己在服务端取请求数据的时候的方式不同了。

3.取网页的基础知识-HTTP状态码

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔

4.取网页的基础知识-URL

URL是Uniform Resource Locator的缩写,即统一资源定位系统,也就是网址。

URL 遵守一种标准的语法,它由协议、主机名、域名、端口、路径、以及文件名这六个部分构成,

 

4.HTMLJavaScript基础-网页结构

1.网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JScript(活动脚本语言)。

   2.HTML是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于 HTML 的标签,并且标签都是成对出现的。

5.HTMLJavaScript基础-网页结构

6.HTMLJavaScript基础-网页结构

1.CSS

CSS 表示样式,<style type=text/css">表示下面引用一个 CSS,在 CSS 中定义了外观

2. JScript 表示功能。交互的内容和各种特效都在 JScript 中,JScript 描述了网站中的各种功能

如果用人体来比喻,HTML 是人的骨架,并且定义了人的嘴巴、眼睛、耳朵等要长在哪里。CSS 是人的外观细节,如嘴巴长什么样子,眼睛是双眼皮还是单眼皮,是大眼睛还是小眼睛,皮肤是黑色的还是白色的等。JScript 表示人的技能,例如跳舞、唱歌或者演奏乐器等。

7.爬虫的合法性

每一个网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断是否有禁止访客获取的数据。

8.爬取网页的urllib

1.urllib库

Python3.x标准库urllib提供了urllib.request、urllib.response、urllib.parse和urllib.error四个模块,很好地支持了网页内容读取功能。再结合Python字符串方法和正则表达式,可以完成一些简单的网页内容爬取工作,也是理解和使用其他爬虫库的基础。

2. 使用urllib库获取网页信息

使用 urllib.request.urlopen()函数可以打开一个网站,读取并打印网页信息。  

urllib.urlopen(url, data[, proxies])

urlopen()函数返回response对象

函数的参数url表示远程数据的路径;data表示提交到url的数据;proxies用于设置代理。

3. 使用urllib库获取网页信息

response对象的方法

info()方法:   返回一个httplib.HTTPMessage对象。

getcode()方法:返回HTTP状态码。如果是HTTP请求,200表示请求成功完成,404表示网址未找到。

geturl():返回请求的url。

9.urllib的基本应用

2.提交网页参数

(1)下面的代码演示了如何使用GET方法读取并显示指定url的内容。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值