一、知识储备
1.学习爬虫要了解HTML和CSS的基础知识,了解网页的结构和样式。
2.了解HTTP协议,理解请求和响应的基本概念。
二、网页请求原理
1. 浏览器地址栏输入URL
当你在浏览器的地址栏中输入一个URL时,浏览器会开始一系列的步骤来获取并显示这个网页。
2. DNS解析
浏览器首先需要通过DNS(Domain Name System)将输入的URL中的域名解析为对应的IP地址。这个过程涉及到在网络中查询DNS服务器,找到与域名对应的IP地址。
3. 建立TCP连接
一旦获得了IP地址,浏览器会与服务器建立一个TCP(Transmission Control Protocol)连接。这个连接是双向的,用于数据的发送和接收。
4. 发送HTTP请求
一旦建立了TCP连接,浏览器会通过这个连接向服务器发送一个HTTP请求。HTTP请求包含了多个部分,如请求行、请求头部和请求体。其中,请求行包含了请求方法(如GET、POST等)和请求的URL;请求头部包含了额外的信息,如User-Agent、Cookie等;请求体则包含了发送给服务器的数据。
5. 服务器处理请求
服务器在接收到HTTP请求后,会根据请求的内容进行处理。这个处理过程可能涉及到读取数据库、执行动态脚本等操作。服务器处理完请求后,会生成一个HTTP响应返回给浏览器。
6. 发送HTTP响应
HTTP响应包含了多个部分,如状态码、响应头部和响应体。状态码告诉浏览器请求是否成功;响应头部包含了额外的信息,如Content-Type、Set-Cookie等;响应体则包含了服务器返回的数据。
7. 浏览器解析和显示网页
浏览器接收到HTTP响应后,会解析响应中的HTML内容,并显示在屏幕上。如果响应中包含了CSS或JavaScript文件,浏览器还会分别下载并执行这些文件,以便正确地显示网页内容。
8. 关闭TCP连接
当浏览器完成对网页的加载后,会关闭与服务器之间的TCP连接。如果用户在浏览器中继续浏览其他网页,则会重复以上步骤。
三、工具准备
1.安装Python环境,选择合适的Python版本。
2.安装必要的Python库,如requests、BeautifulSoup、lxml等。
安装LXML包
pip install lxml
或者国内镜像
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
四、urllib库
1.基础知识
urlib库是python内置的HTTP请求库,它可以看做是处理URL的组件集合
2.下载和导入
在命令管理器下载urllib库
pip install urllib
导入urllib库。
实例
import urllib.request
1..urllib库基础
使用urllib.request模块快速爬取百度首页
实例结果
上述案例代码就已经帮我们把百度的首页全部代码下载下来了
分析urlopen方法
urlopen方法可以接收多个参数,格式如下:
uurllib.request.urlopen(url,data+None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)
url:表示目标资源在网站中的位置。
data:用来指明服务器发送请求的额外信息。
timeout:该参数用于设置超时时间,单位是秒。
context:实现SSL加密运输,该参数很少使用。
使用HTTPResponse对象
1.使用urlopen方法发送HTTP请求后,服务器返回的响应内容封装在一个HTTPResponse类型的对象中。
例如:
2.HTTPResponse类属于http.client模块,该类提供了获取URL、状态码、响应内容等方法。
geturl() :用于获取响应内容的URL,该方法可以验证发送的HTTP请求是否被重新调配。
info() :返回页面元信息
get() :返回HTTP请求
构造Request对象
如果需要执行复杂操作,则要创建一个Request对象来作为urlopen方法的参数
在构建请求时,除了必须设置的URL参数外,还可以加入很多内容
data:默认为空,该参数表示提交表单数据,同时HTTP请求方法将从默认GET方式改为POST方式。
headers:默认为空,该参数是一个字典类型,包含了需要发送的HTTP报头的键值对。
url编码转换
当传递URL中包含中文或者其他特殊字符时需要用urllib.parse库中的urlencode方法将URL进行编码。
GET请求
是urllib库发送的一种请求方式
例:
添加特定的Headers--请求伪装
如果不是从浏览器发出的请求,我们是不能获取响应内容的,针对这种情况,我们需要将爬虫程序发出一个伪装成一个从浏览器发出的请求
requests库
使用pip进行安装
pip install requests
GET请求常用参数
在requests库中,通过调用get()函数发送,该函数会根据传入URL构建一个请求,将该请求发送给服务器,函数声明如下:
小结:
这篇文章只分享了我的一些学习心得,分享的库也是最简单的一个,简单的介绍了urllib库的一些常用方法,讲解了一些关于urllib的一些使用技巧。