web工具:selenium
简述:
selenium第三方库,可以通过webdriver模块创建浏览器对象,用代码模拟浏览器指令,并调用真实浏览器进行操作
selenium库--------------driver-------------------真实浏览器
优点:
使用浏览器对象访问url,获取到的是渲染完成的页面数据,如需要Ajax、js动态加载的数据,也可以获得
准备:
1. 下载driver,新版浏览器将driver剥离了,所以需要下载本地某浏览器对应版本的driver
如,本地有Chrome浏览器,需要下载对应版本的ChromeDriver
下载地址:https://npm.taobao.org/mirrors/chromedriver/
2. 将driver解压的.exe文件放到python主目录下scripts文件夹下即可(Windows)
使用:
from selenium import webdriver # 1. 创建浏览器 mydriver = webdriver.Chrome() # 2. 调用浏览器,发送请求 mydriver.get('http://www.lrts.me') # 3. 保存图像(注意:只截取浏览器当前大小的截图, 如果浏览器为窗口模式,也只截取当前窗口大小的图像) mydriver.save_screenshot('test.png') # 4. 获取页面数据 html = mydriver.page_source # 5. 找到页面中的输入框(此处介绍3种方式) # <input type="text" name="passwd" id="passwd-id" /> element1 = mydriver.find_element_by_id("passwd-id") element2 = mydriver.find_element_by_name("passwd") element3 = mydriver.find_element_by_xpath("//input[@id='passwd-id']") # 6. 输入内容 element1.send_keys("some text") # 7. 清除输入内容 element1.clear() # 8. 提交 element1.click() # 9.1 解析数据: 使用class属性来定位 # a. 要找该标签的父标签的class属性,没有就继续向上找 # b. 获取到的为数据对象 data_objs1 = mydriver.find_elements_by_class_name('h-category-item') content_list = [] for i in data_objs1: content_list.append(i.text) print(content_list) # 9.2 解析数据 使用xpath来定位 # 1. find_elements_by_xpath解析所有符合xpath的数据,指到最后一个标签即可 # 2. 获取到的是多个数据对象 xpath = "//li[@class='h-category-item']/a/span" data_objs2 = mydriver.find_elements_by_xpath(xpath) data_list = [] for i in data_objs2: data_list.append(i.text) print(data_list) while True: instruct = input("请输入指令: ") if instruct == 'quit': mydriver.quit() elif instruct == 'break': break
实例:
1. 打开懒人听书页面
2. 获取输入框,输入‘斗破苍穹’
3. 获取搜索按钮,并点击
from selenium import webdriver # 1. 创建浏览器 mydriver = webdriver.Chrome() # 2. 调用浏览器,发送请求 mydriver.get('http://www.lrts.me') # 3. 获取页面数据 html = mydriver.page_source # 4. 找到页面中的输入框 tag_input_xpath = "//div[@class='g-search-b clearfix']/input" element1 = mydriver.find_element_by_xpath(tag_input_xpath) # 清除输入内容 # element.clear() # 5. 获取提交,并点击 click_class_name = 'g-search-icon' element2 = mydriver.find_element_by_class_name(click_class_name) element2.click()

浙公网安备 33010602011771号