首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
28 篇文章
1
一篇文章让你入门API测试
2
[接口测试 - 基础篇] 01 你应该了解的协议基础
3
[接口测试 - 基础篇] 02 你应该掌握的Python3接口测试内功
4
[接口测试 - 基础篇] 03 unittest测试框架了解多少才够?
5
[接口测试 - 基础篇] 04 无法绕过的json解析
6
[接口测试 - 基础篇] 05 好讨厌的xml解析
7
[接口测试 - 基础篇] 06 好吧也来解析下html
8
[接口测试 - 基础篇] 07 来来来,一起读写excel玩玩之一
9
[接口测试 - 基础篇] 08 封装个基本的excel解析类
10
[接口测试 - 基础篇] 09 其实吧,读写csv格式也是要掌握的
11
[接口测试 - 基础篇] 10 别啊,还有INI格式呢,别忘记我
12
[接口测试 - 基础篇] 11 掌握下python解析YAML格式也是需要的
13
[接口测试 - 基础篇] 12 还是要掌握python日志管理模块的
14
[接口测试 - 基础篇] 13 写在接口测试基础篇完结时
15
[接口测试 - http.client篇] 14 源码初探及其工作机制分析
16
[接口测试 - http.client篇] 15 常用API说明及基本的示例
17
[接口测试 - http.client篇] 16 基于http.client之POM实战一下
18
[接口测试 - http.client篇] 17 http.client之入门级接口测试框架
19
接口测试 | urllib篇 18 urllib介绍
20
接口测试 | urllib篇 19 urllib基本示例
21
[接口测试 -基础篇] 20 用flask写一个简单server用于接口测试
22
接口测试 | 21 基于flask弄个restful API服务出来
23
接口测试 | 22 requests基础入门
24
接口测试 23 requests基础入门二
25
接口测试 | 24 requests + unittest集成你的接口测试
26
接口测试 | 25 requests + pytest测试实例
27
接口测试 | 26 基础及简要验证清单
28
接口测试 | 27 HTTP接口详细验证清单

接口测试 | urllib篇 19 urllib基本示例

概述

本章就要就urllib中parse、request模块的重点API进行说明,也是以后大家最常用到的API。

  • 本文不会列举所有的API。
  • 本文以实例方式演示说明API,即直接上代码

实例

  • 先看一个基本的实例:
代码语言:javascript
复制
#-*- coding:utf-8 -*-

__author__ = "苦叶子"

import urllib.parse
import urllib.request

if __name__ == "__main__":
    print("urllib API实例演示说明")    

    # 访问百度首页
    response=urllib.request.urlopen('http://www.baidu.com')  

    # 打印下首页是html源码
    # 获取完整的响应内容,便于断言其中的特定值
    html=response.read() 
    print(html)    

    # 打印下http header信息
    # 有时候我们需要提前header值来用于下一个请求
    header = response.info()
    print(header)    
    
    # 获取下状态码 http响应的status code
    # 接口测试的一个断言,就是断言状态码
    status_code = response.getcode()
    print(status_code)    

    # 打印下本次请求的目标url
    url = response.geturl()
    print(url)
  • 下面我们基本的爬虫实例

我们尝试爬取下博客园首页的一些链接。

注意:需要用到前基础篇html.parser模块相关是技术

代码语言:javascript
复制
#-*- coding:utf-8 -*-
__author__ = "苦叶子"

import urllib.parse
import urllib.request
from html.parser import HTMLParser

class BlogHTMLParser(HTMLParser):
    data = []
    data_key = ""

    def __init__(self):
        HTMLParser.__init__(self)
        self.is_a = False

    def handle_starttag(self, tag, attrs):
        # 处理开始为a的标签
        if tag == "a":
            self.is_a = True
            for name,value in attrs:                
                if name == "href":                    
                    # 提取a的href属性值
                    self.data_key = value    

    def handle_data(self, data):
        # 处理结束为a的标签
        if self.is_a and self.lasttag == "a":            
            # 将a标签的href属性值作为key, a的文本作为data构建字典
            self.data.append({self.data_key : data})    

    def handle_endtag(self, tag):
        # 处理a结束标签
        if self.is_a and self.lasttag == "a":
            self.is_a = False

    def get_data(self):
        # 返回所有从a中提取到的目标数据
        return self.data

if __name__ == "__main__":
    print("urllib爬取博客园首页实例演示说明")

    url = "https://www.cnblogs.com/"

    # 访问首页
    response = urllib.request.urlopen(url)    
    # 获取首页的html
    data = response.read().decode(encoding="utf-8")    
    
    # 提取所有的链接
    blogHtmlParser = BlogHTMLParser()
    blogHtmlParser.feed(data)
    links = blogHtmlParser.get_data()
    print(links)

小结

在做爬虫的一些基础研究、学习时,建议能多多使用urllib,加深、加强对http的理解和掌握。

下一篇
举报
领券