python接口自动化测试五:爬虫

安装:beautifulsoup4

from
bs4 import BeautifulSoup

yoyo = open(‘yoyo.html‘, ‘r‘)   # 以读的方式打开“yoyo.html”文件

# print(yoyo.read())      # 此方法打开的是一个字符串,内容没有层级结构

# yoyo.close()

soup
= BeautifulSoup(yoyo, ‘html.parser‘)   # 此时打印出来的效果与.read的一致

# print(soup.prettify())  # 此时打印出来为有层级的html格式

# 通过soup对象,去找tag标签

head
= soup.head

print(head)    # <head><title>yoyo
ketang</title></head>

# 当有多个标签重名的时候,会从上往下找,找到第一个后就结束,不再往下继续找

# 通过soup对象,去找p标签

p = soup.p

print(p)    # <p
class="title"><b>yoyoketang</b></p>

# 获取string对象:通过标签属性获取

s = p.string

print(s)    # yoyoketang

# 获取注释对象,(此处的注释在b标签)

b_str
= soup.b.string

print(b_str)   
-- Hey, this in comment!--

print(type(b_str))  # Comment类型

# 标签属性
from bs4 import BeautifulSoup
yoyo = open(‘yoyo.html‘, ‘r‘)   # 以读的方式打开“yoyo.html”文件
# print(yoyo.read())      # 此方法打开的是一个字符串,内容没有层级结构
# yoyo.close()

soup = BeautifulSoup(yoyo, ‘html.parser‘)

p = soup.p  # p 标签
print(p)    # <p class="title"><b>yoyoketang</b></p>
# 获取标签属性
value = p.attrs[‘class‘]    # tag对象,可以当成字典取值
print(value)        # [‘title‘] list属性

# calss属性有多重属性,返回的值是list
# class="clearfix sdk 十分广泛广泛的
# value = p.attrs[‘class‘]
# print(value) # [‘clearfix‘, ‘sdk‘, ‘十分广泛广泛的‘]

# 查找所有文本
from bs4 import BeautifulSoup
yoyo = open(‘yoyo.html‘, ‘r‘)   # 以读的方式打开“yoyo.html”文件
# print(yoyo.read())      # 此方法打开的是一个字符串,内容没有层级结构
# yoyo.close()

soup = BeautifulSoup(yoyo, ‘html.parser‘)

# 获取body对象内容
body = soup.body
print(body)

# 只获取body里面的文本信息
get_text = body.get_text()  # 获取当前标签下的,所有子孙节点的string
print(get_text)

# 查找所有的标签对象
from bs4 import BeautifulSoup
yoyo = open(‘yoyo.html‘, ‘r‘)   # 以读的方式打开“yoyo.html”文件
# print(yoyo.read())      # 此方法打开的是一个字符串,内容没有层级结构
# yoyo.close()

soup = BeautifulSoup(yoyo, ‘html.parser‘)

# 查找所有的a标签对象
all = soup.find_all(‘a‘)
print(all# 返回的list
# [<a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/fiddler/" id="link1">fiddler</a>, <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/python/" id="link2">python</a>, <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/selenium/" id="link3">python</a>]

# 打印所有的a标签
for i in all:
    print(i)
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/fiddler/" id="link1">fiddler</a>
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/python/" id="link2">python</a>
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/selenium/" id="link3">python</a>

# 查找所有的class标签对象
all = soup.find_all(class_="sister")    # class是关键字,此处须改为“class_”
print(all# 返回的list
# [<a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/fiddler/" id="link1">fiddler</a>, <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/python/" id="link2">python</a>, <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/selenium/" id="link3">python</a>]

# 打印所有的class_="sister"标签
for i in all:
    print(i)
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/fiddler/" id="link1">fiddler</a>
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/python/" id="link2">python</a>
# <a class="sister" href="http://www.cnblogs.com/yoyoketang/tag/selenium/" id="link3">python</a>

# 爬图片
# 目标网站:http://699pic.com/sousuo-218808-13-1.html
import requests
from bs4 import BeautifulSoup
import os
r = requests.get(‘http://699pic.com/sousuo-218808-13-1.html‘)

# r.content   # 返回的是字节流

soup = BeautifulSoup(r.content, ‘html.parser‘# 用html解析器,查找r.content

# tu = soup.find_all(‘img‘)   # 查找所有的标签名字为“img”的对象
tu = soup.find_all(class_="lazy")   # 查找所有的标签名字为“class_="lazy"”的对象

for i in tu:
#    print(i)
# <img alt="洱海清晨的彩霞倒映水中高清图片" class="lazy" data-original="http://img95.699pic.com/photo/50061/5608.jpg_wh300.jpg" height="300" src="http://static.699pic.com/images/blank.png" title="洱海清晨的彩霞倒映水中图片下载" width="453.30915684497"/>
    print(i[‘data-original‘])   # 获取所有的url地址

# 爬单张图片
url = ‘http://img95.699pic.com/photo/50061/5608.jpg_wh300.jpg‘
r = requests.get(url)
f = open(‘123.jpg‘, ‘wb‘)   # 以二进制写入的方式打开一个名为123.jpg的文件 (后缀可随意改)
f.write(r.content# 把r传输的字节流写入到文件中
f.close()   # 关闭文件

# 批量写入:

# 创建路径,  创建一个名为“tupian”的文件夹
curpath = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
tupian = os.path.join(curpath, ‘tupian‘)
if not os.path.exists(tupian)# 判断名字为“tupian”的文件夹是否为不存在
    os.mkdir(tupian)        # 不存在,则创建名字为“tupian”的文件夹
# 批量写入图片并保存
for i in tu:
    try:
        jpg_url = i[‘data-original‘]    # 要获取的图片的地址
        name = i[‘alt‘]
        r = requests.get(jpg_url)
        # 写入内容,放到tupian文件夹下
        f = open(os.path.join(tupian, ‘%s.jpg‘%name), ‘wb‘)
        f.write(r.content)
        f.close()
    except:
        pass
 

原文地址:https://www.cnblogs.com/zhongyehai/p/9147719.html

时间: 2024-08-29 23:01:00

python接口自动化测试五:爬虫的相关文章

python接口自动化测试(五)-其它(认证&amp;代理&amp;超时配置)

有了前面几节的介绍,基本的接口测试是可以满足了.本节一些其它的高级技巧: 一.认证 1.基本认证: # -*- coding:utf-8 -*- import requests url = "http://httpbin.org/basic-auth/user/passwd" r1 = requests.get(url) print "未提供用户名密码:" + str(r1.status_code) #Basic Authentication r2 = reques

颠覆你的Python接口自动化测试,约吗?

课程 一直以来,我都很喜欢收集大家问的比较多的问题,然后一边回答一边整理成文.今天也不例外,只是由一问一答,变成了三问三答. [你问] 我们为什么要做接口测试? [我答] 之前在<测试路上你问我答>系列里写过一篇答疑,详见<接口测试的是什么和为什么?> [你问] Python 语言现在为什么这么火? [我答] 这个问题,其实我的回答未必全面,大家在简书或者任何一个技术论坛搜索一下,很多阐述.推荐下面这篇:Python 为何能坐稳 AI 时代头牌语言? [你问] 老师,我之前看了你写

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

python接口自动化测试

之前在项目中搞了一套jmeter +jenkins + git + ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests + unittest + ddt +pymysql + BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中, 支持数据驱动.连数据库查询. 目前框架还不是特别完善,需要在后续的使用中一步步优化,目前尚未使用jenkins做集成, 后续结合jenkins做成持续集成.接口自动化测试框架地址:https://gi

python接口自动化测试 - openpyxl基本使用

前言 当你做接口自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高: 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提供了访问Excel的方法 openpyxl简单介绍 一个Python库,用于读取/写入Excel 2010  xlsx .xlsm .xltx .xltm 文件 不能操作 xls 文件 openpyxl简单概念 Workbook:excel工作表 Sheet:工作表中的一张表 Cell:其中的一个单

基于Python接口自动化测试框架(初级篇)附源码

引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局限性: 1.测试数据不可控:    接口虽然是对业务逻辑.程序代码的测试,而实际上是对数据的测试,调用接口输入一批数据,通过断言代码验证接口返回的数据,整个过程围绕数据测试.    如果返回的数据不是固定的,是变化的,那么断言失败,就无法知道是接口程序错误引起的,还是数据变化引起的,所以就需要进行测

python接口自动化测试框架

环境:python3 + unittest + requests Excel管理测试用例, HTMLTestRunner生成测试报告 测试完成后邮件发送测试报告 jsonpath方式做预期结果数据处理,后期多样化处理 后期扩展,CI持续集成 发送邮件效果: 整体结构: common模块 class IsInstance: def get_instance(self, value, check): flag = None if isinstance(value, str): if check ==

python 接口自动化测试--框架整改(五)

代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果 4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成 目前实现功能: 核心调用引擎,数据分析器(demo) 1.用例结构(更新) excel分两个sheet,sheet1中存放用例,结构如下 sheet2中存放测试环境host,接口wsdl地址,接口方法间的映

python接口自动化测试二十五:执行所有用例,并生成HTML测试报告

    import requestsimport unittest class TestQQ(unittest.TestCase):    '''测试QQ号接口'''      # 此注释将展示到测试报告的测试组类 def test_qq(self):        '''测试QQ号码,正确的appkey'''      # 此注释将展示到测试报告的用例标题        url = 'http://japi.juhe.cn/qqevaluate/qq'        par = {