高效Web自动化测试:Requests、Selenium与XPath、BS4综合应用指南

更新:11-21 名人轶事 我要投稿 纠错 投诉

老铁们,大家好,相信还有很多朋友对于高效Web自动化测试:Requests、Selenium与XPath、BS4综合应用指南和的相关问题不太懂,没关系,今天就由我来为大家分享分享高效Web自动化测试:Requests、Selenium与XPath、BS4综合应用指南以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

返回解码后内容

内容=响应.文本

获取

打印(内容)

返回二进制

内容=response.content.decode()

返回响应码

打印(响应.status_code)

请求头

打印(response.request.headers)

返回当前编码格式

打印(响应.编码)

查看响应码

打印(响应.status_code)

with open("baidu.html", "w") as f:

f.write(内容)

对于POST请求,我们一般需要为其添加一些参数。那么最基本的参数传递方式就可以使用data参数了。

导入请求

req_url="http://fanyi.youdao.com/translate?smartresult=dictsmartresult=rulesmartresult=ugcsessionFrom=null"

分析表单数据

表单数据={

"i":"你好",

"来自":"自动",

"至":"自动",

"smartresult": "字典",

"client": "fanyideskweb",

"doctype": "json",

"版本": "2.1",

"keyfrom": "fanyi.web",

"行动": "FY_BY_CLICKBUTTION",

"typoResult": "假",

}

添加请求头

请求头={

"User-Agent":"Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/67.0.3396.99 Safari/537.36"}

响应=requests.post(

请求网址,

数据=表单数据,

标头=req_header)

print (response.text)

如果是json文件可以直接显示

打印(response.json())

xpath:

XPath(XML 路径语言)是一种用于在XML 文档中查找信息的语言。它可用于遍历XML 文档中的元素和属性。

导入请求

进口再

导入时间

导入urllib.parse

从lxml 导入etree

梅女类():

definit(自己):

self.url="http://www.tieba.baidu.com/category/40076/?page="

self.headers={

"用户代理": "Mozilla/5.0(X11;Ubuntu;Linux x86_64;rv:54.0)Gecko/20100101 Firefox/54.0"

}def loadpage(self, url):

响应=requests.get(url=self.url)

html=response.content.decode("utf-8")

with open("baidu.html", "w") as f:

f.write(html)

#html转换为xml

内容=etree.HTML(html)

#打印(内容)

url_list=内容.xpath(

"//div[@class="threadlist_lzclearfix"]/div[@class="threadlist_title pull_left j_th_tit"]/a/@href"

# 打印(url_列表)

对于url_list: 中的detail_url

full_url="http://tieba.baidu.com"+detail_url

self.detail(full_url)

详情页

def 详细信息(self, url):

响应=requests.get(url=url)

html=response.content.decode("utf-8")

内容=etree.HTML(html)

img_list=内容.xpath(

"//img[@class="BDE_Image"]/@src"

对于img_list: 中的img

自行下载(img)

下载

def 下载(self, url):

响应=requests.get(url=url)

#无需解码

self.save(响应.内容, url)

保存

def保存(自我,内容,img_url):

文件名="贴吧/" + img_url[-10:] + ".jpg"

print("正在下载" + 文件名)

打开(文件名,"wb")作为f:

f.write(内容)

def main(自身):

kw=input("请输入网址")

start=int(input("输入起始页"))

end=int(input("输入结束页"))

对于范围内的i(开始,结束+ 1):

#拼接

full_url=self.url + "f?" + "kw=" + kw + "" + "pn=" + str((i-1)*50)

self.loadpage(full_url)

如果name=="main":

mn=MeiNv()

mn.main()

BS4:

和lxml一样,Beautiful Soup也是一个HTML/XML解析器,它的主要功能是如何解析和提取HTML/XML数据。

lxml只会部分遍历,而Beautiful Soup是基于HTML DOM的,它会加载整个文档并解析整个DOM树。因此,时间和内存开销会大很多,因此性能比lxml低。

BeautifulSoup 解析HTML 相对简单。该API 非常用户友好,支持CSS 选择器、Python 标准库中的HTML 解析器和lxml XML 解析器。

导入请求

从bs4 导入BeautifulSoup

导入urllib.parse

导入json路径

导入json

进口再

类QiDianSpider():

definit(自己):

self.url="https://www.address.com/all?page=1"

self.headers={

"用户代理": "Mozilla/5.0(X11;Ubuntu;Linuxx86_64;rv: 54.0) Gecko/20100101Firefox/54.0"

}

def loadpage(self, url):

响应=requests.get(url=url, headers=self.headers)

bs=BeautifulSoup(response.text, "lxml")

li_list=bs.select("ul[class="all-img-list cf"] li")

对于li_list: 中的li

title=li.select("div[class="book-mid-info"] h4 a")[0].get_text()

href=urllib.parse.urljoin(response.url, li.select("div[class="book-mid-info"] h4 a")[0].get("href"))

作者=li.select("div[class="book-mid-info"] p a")[0].get_text()

type1=li.select("div[class="book-mid-info"] p a")[1].get_text()

type2=li.select("div[class="book-mid-info"] p a")[2].get_text()

id=re.search("(d+)",href).group(1)

打印(ID)

字典={

"标题":标题,

‘作者’:作者,

"类型":type1+"."+type2,

"href":href,

"id":id

}

# 打印(字典)

self.loaddetail(id, dict)def loaddetail(self, bookid, dict):

响应=requests.get(url="https://book.qidian.com/ajax/book/category?_csrfToken=asYDuKBW3fwHjeBdQNcX1GFeE2B9KcEe6dJytbookId="+bookid, headers=self.headers)

html=response.content.decode("utf-8")

vs=jsonpath.jsonpath(json.loads(html), "$.vs")

count=sum(jsonpath.jsonpath(json.loads(html), "$.cnt"))

字典["vs"]=vs[0]

with open("qidian.html", "w") as f:

f.write(json.dumps(dict,ensure_ascii=False)+"n")def start(self):

self.loadpage(self.url)

如果name=="main":

qds=QiDianSpider()

qds.start()

硒:

Selenium 是一个Web 自动化测试工具。它最初是为网站自动化测试而开发的。它类似于我们用来玩游戏的按钮精灵。它可以根据指定的命令自动运行。不同的是Selenium可以直接在浏览器上运行。它支持所有主流浏览器(包括PhantomJS等无界面浏览器)。 Selenium可以让浏览器根据我们的指令自动加载页面,获取所需的数据,甚至可以对页面进行截图,或者判断网站上是否发生了某些操作。

Selenium没有自己的浏览器,也不支持浏览器功能。需要结合第三方浏览器才能使用。但有时我们需要让它嵌入代码中运行,所以我们可以使用一个名为PhantomJS 的工具来代替真正的浏览器。

从硒导入网络驱动程序

driver=webdriver.Chrome(executable_path="/home/hu/下载/chromedriver")

driver.get("https://www.baidu.com/")

driver.save_screenshot("baidu.png")

with open("baidu.html", "w") as f:

f.write(驱动程序.page_source)

用户评论

寒山远黛

最近在学习爬虫,这几个关键词听起来都很有用!

    有15位网友表示赞同!

淡抹丶悲伤

要学会爬虫得先把这些基础工具掌握好才行啊!

    有19位网友表示赞同!

玩味

Requests和Selenium配合起来真的太强了,能解决很多问题。

    有7位网友表示赞同!

孤城暮雨

Selenium比requests更复杂,但功能也更强大吧。

    有6位网友表示赞同!

病房

想学爬虫找资料,常常会看到xpath的使用,看起来蛮难懂的。

    有10位网友表示赞同!

(り。薆情海

bs4真的很方便,对于简单的网页分析很够用啊!

    有14位网友表示赞同!

暖栀

学习爬虫最怕遇到网站的反扒措施,Selenium是不是能帮到手?

    有14位网友表示赞同!

别留遗憾

我之前用的requests抓取数据太慢了,打算试试用Selenium配合xpath加快速度。

    有17位网友表示赞同!

秘密

这四个工具互相组合使用的话,感觉可以玩很多东西啊!

    有15位网友表示赞同!

鹿叹

想问问有没有大神能分享一下Selenium使用技巧啊?

    有10位网友表示赞同!

一个人的荒凉

听说bs4也可以处理HTML结构,比直接用requests比较容易操作。

    有17位网友表示赞同!

箜明

学习xpath的时候遇到好多难题,不知道大家有啥好的学习资源推荐吗?

    有12位网友表示赞同!

一笑傾城゛

爬虫的应用范围越来越广了,看来这些工具以后只会越受欢迎!

    有18位网友表示赞同!

来瓶年的冰泉

想问下Selenium和bs4哪个更方便新手入门?

    有15位网友表示赞同!

小清晰的声音

这几个关键词都跟网络爬取有关,我打算好好学习一下。

    有18位网友表示赞同!

终究会走-

网站动态加载数据怎么办?Selenium是不是能解决?

    有15位网友表示赞同!

断秋风

用这些工具可以实现一些自动化操作吗?比如自动提交表单或者抓取特定信息?

    有18位网友表示赞同!

我要变勇敢℅℅

想了解下xpath的语法规则,感觉有些地方还是不太明白。

    有19位网友表示赞同!

醉婉笙歌

学习爬虫感觉很有挑战性,但也很有趣!

    有15位网友表示赞同!

【高效Web自动化测试:Requests、Selenium与XPath、BS4综合应用指南】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:周杰伦最新专辑音乐歌曲全集MP3下载地址汇总,无需解压支持多种网盘 下一篇:中国首位国际超模:曾遭质疑颜值,现获章子怡狂热支持