selenium介绍
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行Javascript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的 *** 作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器
中文参考文档
官网
环境安装
下载安装selenium
pip install selenium -i https://mirrors.aliyun.com/pypi/simple/
谷歌浏览器驱动程序下载地址:
http://chromedriver.storage.googleapis.com/index.html
使用示例
from selenium import webdriver from time import sleep # 实例化一款浏览器 bor = webdriver.Chrome(executable_path='chromedriver.exe') # 对指定的url发起请求 bor.get('https://www.jd.com/') sleep(1) # 进行标签定位 search_input = bor.find_element_by_id('key') # 向搜索框中录入关键词 search_input.send_keys("mac pro") # 点击搜索按钮 btn = bor.find_element_by_xpath('//*[@id="search"]/div/div[2]/button') btn.click() sleep(2) # 执行js,让滚轮向下滚动 bor.execute_script('window.scrollTo(0, document.body.scrollHeight)') sleep(2) page_text = bor.page_source print(page_text) bor.quit()
浏览器创建
Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持无界面浏览器PhantomJS。
from selenium import webdriver browser = webdriver.Chrome() browser = webdriver.Firefox() browser = webdriver.Edge() browser = webdriver.PhantomJS() browser = webdriver.Safari()
元素定位
webdriver 提供了一系列的元素定位方法,常用的有以下几种:
定位一个元素
定位多个元素
含义
注意:
1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。
2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。
3、另外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID, id),二者得到的结果完全一致。
实例演示
假如有一个web页面,通过前端工具查看到一个元素的属性是这样的。
评论列表(0条)