python爬取网页数据步骤,python爬虫爬取网页数据

大家好,本文将围绕利用python爬取简单网页数据步骤展开说明,如何利用python爬取网页内容是一个很多人都想弄明白的事情,想搞清楚python爬取网页数据步骤图解需要先了解以下几个事情。

目录

实现HTTP请求

使用urllib3库实现

1. 生成请求

2. 请求头处理

3. Timeout设置

4.请求重试设置

5. 生成完整HTTP请求

使用requests库实现

1. 生成请求

2. 查看状态码与编码

3. 请求头与响应头处理

4. Timeout设置

5. 生成完整HTTP请求

解析网页

使用chrome开发者工具查看网页

使用正则表达式解析网页 

1.  Python正则表达式模块

compile方法      

search方法      

findall方法      

2. 获取网页中的标题内容

使用Xpath解析网页

1. 基本语法

2. 谓语

3. 功能函数

4. 提取header节点下全部标题文本及对应链接

使用Beautiful Soup解析网页

1. 创建BeautifulSoup对象

 2. 对象类型

3. 搜索特定节点并获取其中的链接及文本

3. 搜索特定节点并获取其中的链接及文本

数据储存

数据存储

1. 将数据存储为JSON文件

2. 将数据存储入MySQL数据库 


实现HTTP请求

使用urllib3库实现

许多Python的原生系统已经开始使用urllib3库,其提供了很多python标准库里所没有的重要特性。

连接特性

连接特性

线程安全

管理连接池

客户端SSL∕TLS验证

使用分部编码上传文件

协助处理重复请求和HTTP重定位

支持压缩编码

支持HTTP和SOCKS代理

测试覆盖率达到100%

1. 生成请求

通过request方法即可创建一个请求,该方法返回一个HTTP响应对象python画树状图。Reques语法格式如下。

reques方法常用的参数及其说明如下。

参数

说明

method

接收string。表示请求的类型,如“GET”、“HEAD”、“DELETE”等。无默认值

url

接收string。表示字符串形式的网址。无默认值

fields

接收dict。表示请求类型所带的参数。默认为None

headers

接收dict。表示请求头所带参数。默认为None

**urlopen_kw

接收dict或其他Python中的类型的数据。依据具体需要及请求的类型可添加的参数,通常参数赋值为字典类型或为具体数据。无默认值

2. 请求头处理

在request方法中,如果需要传入headers参数,可通过定义一个字典类型实现。定义一个包含User-Agent信息的字典,使用浏览器为火狐和chrome浏览器,操作系统为“Windows NT 6.1; Win64; x64”,向网站“http://www.tipdm.com/tipdm/index.html”发送带headers参数的GET请求,hearders参数为定义的User-Agent字典。

3. Timeout设置

为防止因为网络不稳定、服务器不稳定等问题造成连接不稳定时的丢包,可以在请求中增加timeout参数设置,通常为浮点数。依据不同需求,timeout参数提供多种设置方法,可直接在URL后设置该次请求的全部timeout参数,也可分别设置该次请求的连接与读取timeout参数,在PoolManager实例中设置timeout参数可应用至该实例的全部请求中。

4.请求重试设置

urllib3库可以通过设置retries参数对重试进行控制。默认进行3次请求重试,并进行3次重定向。自定义重试次数通过赋值一个整型给retries参数实现,可通过定义retries实例来定制请求重试次数及重定向次数。若需要同时关闭请求重试及重定向则可以将retries参数赋值为False,仅关闭重定向则将redirect参数赋值为False。与Timeout设置类似,可以在PoolManager实例中设置retries参数控制全部该实例下的请求重试策略。

5. 生成完整HTTP请求

使用urllib3库实现生成一个完整的请求,该请求应当包含链接、请求头、超时时间和重试次数设置。

使用requests库实现

requests库是一个原生的HTTP库,比urllib3库更为容易使用。requests库发送原生的HTTP 1.1请求,无需手动为URL添加查询字串,也不需要对POST数据进行表单编码。相对于urllib3库,requests库拥有完全自动化Keep-alive和HTTP连接池的功能。requests库包含的特性如下。

连接特性

连接特性

连接特性

Keep-Alive&连接池

基本∕摘要式的身份认证

文件分块上传

国际化域名和URL

优雅的key∕value Cookie

流下载

带持久Cookie的会话

自动解压

连接超时

浏览器式的SSL认证

Unicode响应体

分块请求

自动内容解码

HTTP(S)代理支持

支持.netrc

1. 生成请求

requests库生成请求的代码非常便利,其使用的request方法的语法格式如下。

request方法常用的参数及其说明如下。 

参数

说明

method

接收string。表示请求的类型,如“GET”、“HEAD”、“DELETE”等。无默认值

url

接收string。表示字符串形式的网址。无默认值

**kwargs

接收dict或其他Python中的类型的数据。依据具体需要及请求的类型可添加的参数,通常参数赋值为字典类型或为具体数据

2. 查看状态码与编码

需要注意的是,当requests库猜测错时,需要手动指定encoding编码,避免返回的网页内容解析出现乱码。 手动指定的方法并不灵活,无法自适应对应爬取过程中不同网页的编码,而使用chardet库比较简便灵活,chardet库是一个非常优秀的字符串∕文件编码检测模块。 chardet库使用detect方法检测给定字符串的编码,detect方法常用的参数及其说明如下。

参数

说明

byte_str

接收string。表示需要检测编码的字符串。无默认值

3. 请求头与响应头处理

requests库中对请求头的处理与urllib3库类似,也使用headers参数在GET请求中上传参数,参数形式为字典。使用headers属性即可查看服务器返回的响应头,通常响应头返回的结果会与上传的请求参数对应。

4. Timeout设置

为避免因等待服务器响应造成程序永久失去响应,通常需要给程序设置一个时间作为限制,超过该时间后程序将会自动停止等待。在requests库中通过设置timeout这个参数实现,超过该参数设定的秒数后,程序会停止等待。

5. 生成完整HTTP请求

使用requests库的request方法向网站“http://www.tipdm.com/tipdm/index.html”发送一个完整的GET请求,该请求包含链接、请求头、响应头、超时时间和状态码,并且编码应正确设置。

解析网页

使用chrome开发者工具查看网页

chrome浏览器提供了一个非常便利的开发者工具,供广大web开发者使用,该工具提供包括查看网页元素、查看请求资源列表、调试JS等功能。该工具其中一个打开方式可通过右键单击chrome浏览器页面,在弹出菜单中单击图所示的“检查”选项打开。  

也可以单击chrome浏览器右上角快捷菜单,如图所示,单击“更多工具”选项中的“开发者工具”选项,或使用快捷键组合Ctrl+Shift+I。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值