老铁们,大家好,相信还有很多朋友对于高效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)
【高效Web自动化测试:Requests、Selenium与XPath、BS4综合应用指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
最近在学习爬虫,这几个关键词听起来都很有用!
有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位网友表示赞同!