爬虫抓取静态网页的学习心得

本文介绍了爬虫开发的基础,包括HTML/CSS和HTTP协议基础知识,以及如何通过浏览器请求原理、Python的urllib库和requests库进行网页抓取,包括DNS解析、TCP连接、HTTP请求发送和响应解析等步骤。
摘要由CSDN通过智能技术生成

一、知识储备

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的一些使用技巧。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值