selenium基本操作
注:如果没有安装chrome驱动,可以到这里
编写基于浏览器自动化的操作代码
- 实例化浏览器对象bro=webdriver.Chrome(executable_path=r’C:\Users\Lenovo\PycharmProjects\pythonProject1\venv\爬虫之selenium\chromedriver.exe’)
- 发起请求 -----bro.get(url)
- 标签定位 -----find系列操作
- 标签交互(如输入)----send_key(‘xxx’)
- 执行js程序-----excute_script(“jsCode”)
- 前进和后退(导航栏上的前进和后退按钮)---- forward(), back(), refresh()
- 关闭浏览器------quit()
- 获得当前所有打开的窗口的句柄(用于多窗口转换操作)----all_handles=bro.window_handles
- 获取当前窗口句柄----current_window_handle
- 切换窗口句柄------switch_to.window(需要切换到的句柄)
- 切换到原始窗口-----bro.swithc_to.window(bro.window_handles[0])
- 切换到最新窗口----bro.switch_to.window(bro.window_handles[-1])
- 页面截图-----bro.save_screenshot("./aa.png") 参数为保存路径
- 元素截图-----a. screenshot(’./aa.png’) a为定位到的元素
- 页面源码获取 ----bro.page_source
- 点击操作-----btn.click() btn为定位到的按钮
实例操作:解析药监局(http://scxk.nmpa.gov.cn:81/xk/)企业名称
# 导入selenium模块
from selenium import webdriver
from lxml import etree
from time import sleep
# 1. 实例化一个浏览器对象
bro=webdriver.Chrome(executable_path=r'C:\Users\Lenovo\PycharmProjects\pythonProject1\venv\爬虫之selenium\chromedriver.exe')
# 2. 发起请求
bro.get('http://scxk.nmpa.gov.cn:81/xk/')
# 3.获取页面页面数据
page_text=bro.page_source
# 4. 解析出企业名称
tree=etree.HTML(page_text)
li_list=tree.xpath('//*[@id="gzlist"]/li')
for li in li_list:
name=li.xpath("./dl/@title")[0]
print(name)
# 5. 休眠5秒,关闭浏览器
sleep(5)
bro.quit()