python接口自动化--lxml解析

 1 from lxml import etree
 2 import urllib3
 3 import requests
 4 urllib3.disable_warnings()
 5 url="https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=xiaoyujuan"
 6
 7 r = requests.get(url,verify=False)
 8 # print(r.text)
 9
10 dom = etree.HTML(r.content.decode("utf-8"))
11 block = dom.xpath("//*[@id=‘profile_block‘]")
12 t = etree.tostring(block[0],encoding=‘utf-8‘,pretty_print=True)
13 print(t.decode("utf-8"))
14
15 t1 = block[0].xpath("text()")#获取当前节点文本元素
16 print(t1)
17 t2 = block[0].xpath(‘a‘)#定位a标签
18 for i,j in zip(t1,t2):
19     print("%s%s" %(i,j.text))
 1 from lxml import etree
 2 htmldemo = ‘‘‘
 3 <meta charset="UTF-8"> <!-- for HTML5 -->
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <html><head><title>yoyo ketang</title></head><body><b><!--Hey, this in comment!--></b>
 6 <p class="title"><b>yoyoketang</b></p><p class="yoyo">这里是我的微信公众号:yoyoketang <br>
 7 <a href="http://www.cnblogs.com/yoyoketang/tag/fiddler/" class="sister" id="link1">fiddler教程</a><br>
 8 <a href="http://www.cnblogs.com/yoyoketang/tag/python/" class="sister" id="link2">python笔记</a><br>
 9 <a href="http://www.cnblogs.com/yoyoketang/tag/selenium/" class="sister" id="link3">selenium文档</a><br>
10 快来关注吧!</p>
11 <p class="story">...</p>
12 ‘‘‘
13 #etree.HTMLz解析html内容
14 demo = etree.HTML(htmldemo)
15 #打印解析之后的html内容,可用etree.tosting方法
16 #encoding="utf-8"参数可以正常输出html里面的中文内容
17 #pretty_print=True是以标准格式输出
18 t = etree.tostring(demo,encoding=‘utf-8‘,pretty_print=True)
19 print(t.decode(‘utf-8‘))

原文地址:https://www.cnblogs.com/xiaoyujuan/p/11304355.html

时间: 2024-10-19 04:56:26

python接口自动化--lxml解析的相关文章

python接口自动化5-Json数据处理

前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了. 一.json模块简介 1.Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中 2.可以用help(json),查看对应的源码注释内容 Encoding basic P

python接口自动化之openpyxl学习

python接口自动化之openpyxl学习 由于接口自动化测试需要用到python的第三方库--openpyxl库,运用openpyxl库可以进行exl的读和写,再结合unittest测试框架,就能进行接口自动化测试. 一:openpyxl库的安装:pip install openpyxl   二:查看openpyxl库的属性 import openpyxldir1= dir(openpyxl)print(dir1) ['DEFUSEDXML', 'LXML', 'NUMPY', 'PANDA

python接口自动化9-https请求(SSL)

前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编环境: python:2.7.12 requests:2.13.0 fiddler:v4.6.2.0 一.SSL问题 1.不启用fiddler,直接发htt

python接口自动化2-发送post请求

前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容. >>import requests >>help(requests) 2.查看python发送get和post请求的案例 >>> import requests       >>> r

python接口自动化10-token登录

前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录. token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已:另外一种是在url请求参数里,这种更直观. 一.登录返回token 1.如下图的这个登录,无cookies 2.但是登录成功后有返回token 二.请求头带token 1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数 2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行 三.to

python接口自动化8-参数化

前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死 一.登录函数 1.s参数是session的一个实例类,先放这里,方便写后面代码 2.登录函数传三个参数,s是需要调用前面的session类,所以必传,可以传个登录的url,然后payload是账号和密码 二.保存草稿 1.编辑内容的标题title和正文body_data参数化了,这样后面可以方便传不同值 2.这里返回了

python接口自动化7-参数关联

前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿 2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以看出,传的json参数是postId 3.这个postId哪里来的呢?可以看上个请求url地址 4.也就是说保存草稿箱成功之后,重定向一个url地址,里面带有postId这个参数.那接下来我们提取出来

python接口自动化4-绕过验证码登录(cookie)

前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录cookie 1.登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了. 2.可以先手动登录一次,然后抓取这个cookie,这里就需要用抓包工具fiddler了 3.先打开博客园登录界面,手动输入账号和密码(勾选下次自动登录) 4.打开fiddler抓包工具,刷

python接口自动化6-重定向(Location)

前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. (Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址B了. 2.重定向状态码: --301 redirect: 301 代表永久性转移(Permanently Moved) --302 redirect: 302 代表暂时性转移(Temporarily M