爬起来的爬,爬起来的动作
你的网络爬虫会动吗?如何可视化爬虫?今天,我们将使用Selenium(自动化测试框架)和ChromeDriver(浏览器驱动程序)来让您的爬虫移动!
硒
Selenium是一个测试Web应用程序的工具,它可以让基于它编写的程序在浏览器中运行,就像真实用户一样。
其本质是驱动浏览器,完全模拟浏览器的操作,如跳转、输入、点击、下拉等。以获得网页渲染后的结果。
支持的浏览器有IE(7、8、9、10、11)、Mozilla Firefox、Safari、Google Chrome、Opera、Edge等。支持自动记录动作和自动生成不同语言的测试脚本,例如。NET,Perl,Python,Ruby和Java。
Selenium不是一个单一的工具,而是帮助测试人员更有效地自动化基于Web的应用程序的一组工具。
2
chrome驱动器
Selenium是一个开源工具,用于在许多浏览器上自动测试webapps。它提供网页导航、用户输入、JavaScript执行和其他功能。
ChromeDriver是一个独立的服务,它为Chromium实现了Selenium的JsonWireProtocol。
目前W3C标准正在实施并转向。ChromeDriver适用于Android版Chrome和桌面版Chrome(Mac、Linux、Windows和ChromeOS)。
ChromeDriver是google为网站开发者提供的自动化测试接口,是selenium和Chrome浏览器之间的桥梁。
官方网站地址:https://sites.google.com/a/chromium.org/chromedriver/
三
爬行动物
我们访问百度输入关键词“东京奥运会”,爬上了目前奥运奖牌前五的数据。
首先,加载浏览器驱动程序。这里我用的是下载的Chrome驱动。
从selenium导入web驱动程序
#加载本地chrome驱动程序
driver=webdriver。chrome(executable _ path= E:\ \ workspace \ \ Project \ \ script \ \ chrome driver . exe )
访问百度,输入关键词进行搜索。
driver . get( https://www . Baidu . com/)
#获取输入框
kw=driver . find _ element _ by _ id(“kw”)
Kw.send_keys(东京奥运会)
#点击搜索
su=driver . find _ element _ by _ id( su )
su.click()
#隐式等待1秒钟以适应ajax异步响应
driver . implicit _ wait(1)
根据html的结构特点,可以通过定位Xpath和元素选择器来抓取数据。
#查找要爬网的内容。
ul=driver . find _ element _ by _ XPath(
//*[@ id= 1 ]/div/div[3]/div/div[2]/div[3]/div/div[2]/div/div[2]/div )。按标签名查找元素( ul )
lis=ul . find _ elements _ by _ tag _ name( Li )
结果=[]
对于范围内的I(0,len(lis)):
信息={}
如果i==0:
继续
信息[国家]=列表[i]。find _ element _ by _ class _ name( tab-item-place _ 2 obgx )\。find_element_by_tag_name(span )。文本
info[gold]=lis[i]。find _ elements _ by _ class _ name( tab-item-medal _ rkzt 4 )[0]。文本
info[silver]=lis[i]。find _ elements _ by _ class _ name( tab-item-medal _ rkzt 4 )[1]。文本
info[青铜]=lis[i]。find _ elements _ by _ class _ name( tab-item-medal _ rkzt 4 )[2]。文本
info[total]=lis[i]。find _ element _ by _ class _ name( tab-item-sum _ 36 ahl )。文本
info[url]=lis[i]。find _ element _ by _ class _ name( tab-item-link _ 1 hozg )。get_attribute(href )
result.append(info)
打印结果并关闭浏览器。
对于结果中的项目:
driver.get(项目[url])
driver.back()
打印(项目)
#关闭驱动器
driver.close()
#关闭浏览器
driver.quit()
操作效果:
目标
作者:李,在读计算机科学硕士。
关注我,一起学习,一起成长。
原创作品来自李哥技术笔记,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。