selenium最初是一个自动花测试工具,而爬虫中使用它主要是为了解决requests无法直接薅js加密的代码问题,也就是动态数据加载的网站
selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器,我这里是用谷歌的
下载
浏览器中也要下载webdriver
首先查看自己浏览器的版本
接着到官网下载:CNPM Binaries Mirror
然后解压,放在python安装路径的Script里面
如果不知道安装路径
在cmd里面输入
where python
测试
from selenium import webdriver
dirver = webdriver.Chrome() # 打开浏览器
gethtml = dirver.get('https://www.baidu.com') # 打开网址
# gethtml.quit() 关闭浏览器
如果能打开浏览器的话就是安装成功了
来看一下使用
可以看到,搜索框在input那里,那么我们可以用xpath语法定位到这里
//*[@id="kw"]
搜索键也在一个input里面,xpath语法定位
//*[@id="su"]
那么,我们来测试一下
selenium import webdriver
dirver = webdriver.Chrome()
dirver.get('https://www.baidu.com')
dirver.find_element_by_xpath('//*[@id="kw"]').send_keys('冷巷') # 在搜索框输入 冷巷
dirver.find_element_by_xpath('//*[@id="su"]').click() # 点击搜索键
浏览器对象
dirver.get():地址栏输入url并确认
dirver.quit():关闭浏览器
dirver.close():关闭当前页
dirver.save_screenshot(xxx.png):屏幕截图
dirver.maximize_window():浏览器窗口最大化
dirver.page_source: HTML结构源码
print(dirver.page_source.find('asdadsa')):在html源码中查找某个字符串是否存在,如果失败(不存在),返回-1
dirver.page_source.find('字符串')
从源码中查找指定字符串,没有返回-1,常用于判断最后一页
单元素查找-返回值为节点对象
dirver.find_element_by_id('id属性值')
dirver.find_element_by_name('name属性值')
dirver.find_element_by_class_name('class属性值')
dirver.find_element_by_xpath('xpath表达式')
dirver.find_element_by_link_text('链接文本')
dirver.find_element_by_partial_link_text('部分链接文本')
dirver.find_element_by_tag_name('标记名称')
dirver.find_element_by_css_selector('css表达式')
节点对象常用属性及方法
node.send_keys(): 向文本框发送内容
node.click(): 点击
node.clear(): 清空文本
node.get_attribute('属性名'):获取节点属性值
node.text: 获取节点文本内容(包含子节点和后代节点)