先认识XPath定位
我们以Chrome浏览器百度主页为例,右键检查元素,找到“百度一下”按钮对应的标签,对该标签右键>copy>找到Copy XPath,复制得到的XPath为//*[@id="su"]不过这只是相对的XPath路径,如需知道完整的路径就要借助XPath Helper插件。
前面安装好XPathHelper插件后,按Shift+Ctrl+X 打开,浏览器上方会出现一个黑框;按住Shift鼠标移动到页面元素上,黑框左栏会出现该元素的完整XPath,之后用selenium定位时会用到该XPath。
如果嫌以上方式获取到XPath的绝对路径太长,可以删除部分路径,然后将最简路径复制到左栏里,右栏会显示在该页面搜索到了几个结果(即RESULTS后面的数字)以及搜到该元素显示的文本,这些就是爬虫会抓取的内容。
学习selenium的用法
1.我们先尝试用最简单的方式调用selenium模块,代码如下:
from selenium import webdriver
url = 'https://www.baidu.com'
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(8)
driver.get(url)
driver.quit()
解释:其中,第一行 from **** import **** 或者 import **** 是开头调用模块的方式;第二行 先将百度的网址以字符串的形式放入一个变量url中(为了之后修改和调用方便);第三句driver = webdriver.Chrome()是设置selenium启动Chrome浏览器;第四句driver.maximize_window()是将浏览器窗口最大化,driver.implicitly_wait(8)是设置一个等待,selenium的三种等待方式可以参考这篇博客的解释(https://blog.csdn.net/cyjs1988/article/details/76033180);driver.get(url)是控制Chrome浏览器打开url变量所属的链接,driver.quit()是关闭Chrome浏览器,最后按快捷键Ctrl + B就可以立即编译,看到运行结果。
postscript:建议读者重点百度一下显式等待方式,在加载js代码的时候做判断会比较方便。
2.尝试使用selenium查找页面元素,代码如下:
import time
from selenium import webdriver
browser = webdriver.Chrome()
time.sleep(3)
text = browser.find_element_by_id("cp").text
print(text)
browser.quit()
解释:第一行import time为使用强制等待必须先调用 time 这个库,不要问我为什么TvT;第二行from selenium import webdriver这个也是使用selenium必须的,后面就不再解释了;第三四行是使用selenium打开网址的普遍写法,感兴趣的话可百度webdriver的其它命令;第五行time.sleep(3)设置一个强制等待,括号里填几就是等几秒后继续下一步代码;第六行 设置selenium的定位方式,其它方式(具体请自行百度或
参考
)browser.find_element_by_id("cp")是通过查找html5源码里 id = cp 的标签来定位该元素,.text为获取该元素文本 (其它操作参考http://www.cnblogs.com/fnng/p/3202299.html),然后将该文本赋值给变量text;第七行print(text)打印该变量内容;最后关闭浏览器。
3.输入关键词并模拟鼠标点击,代码如下:
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.find_element_by_id('kw').send_keys("selenium")
browser.find_element_by_id("su").click()
time.sleep(5)
browser.quit()
解释:前四行指令为打开网页,第五行browser.find_element_by_id('kw')为应用ID定位找到 开头的标签,该标签对应的就是百度的搜索框输入栏,.send_keys("selenium")为向该标签对应的输入框,输入关键词selenium;第六行 同理browser.find_element_by_id("su")找到百度一下按钮所在位置,.click()为对该元素加一个单击操作,即完成了搜索过程。
领取专属 10元无门槛券
私享最新 技术干货