Hello!大家好,好久没有更新爬虫类的文章了,今天给大家带来一篇基础文章,介绍Selenium的一些基础操作,为我们以后爬虫做基础!
Selenium直接运行在浏览器中,就像真正的用户在操作一样。是一个用于Web应用程序测试的工具。但对于网络爬虫而言并不需要掌握那么细,只要掌握元素定位、输入和点击等,就足够了。今天给大家介绍的是Selenium的安装、八个元素定位语句。
Selenium的安装的安装较为简单,只需要使用pip便可安装:
pip install selenium
安装完后,我们还需要下载一个浏览器驱动器,常用的有Chrome、Edge、Firefox、Safari四个,可根据自身习惯进行下载,这里我以Chrome为例。
首先查看自己谷歌浏览器的版本:
打开Chrome浏览器,在地址栏中输入网址:chrome://version/
然后在http://chromedriver.storage.googleapis.com/index.html中寻找相对应的版本
下载与自己系统相对应的chromedriver
最后,我们将解压至我们项目文件目录下即可
接下来我们就可以通过Selenium来启动Chrome驱动器,这里我用百度新闻进行测试:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://news.baidu.com/")
当我们知道一个元素的id值,我们就可以通过这个语句进行定位,例如百度新闻左侧窗口新闻,它的id值为“pane-news”
driver.find_element_by_id("pane-news")
如果没有这个元素,便会触发NoSuchElementException错误。
如果我们知道的是这个元素的name值,就可以用这个语句进行定位:
driver.find_element_by_name("word")
XPath是用于在XML文档中定位节点的语言。因此Selenium用户可以利用这种强大的语言来定位Web应用程序中的元素。我们以这则新闻为例。
使用XPath的主要原因是当我们不知道所查找的元素的id或name值时。我们可以使用XPath以绝对术语(不建议使用)进行定位:
driver.find_element_by_xpath("/html/body/div/div/div/div/div/div/ul[1]/li[1]/a")
但是这样写,绝对XPath的路径非常臃肿,它包含来自根(html)的所有元素的位置,因此,只要有一点点调整就可能导致失败。所以我们可以用“//”来省略前面的路径:
driver.find_element_by_xpath("//div/ul[1]/li[1]/a")
但是我们会发现,它定位到了符合这个路径规则的第一个元素,并没有匹配到我们想定位到位置。
可以通过查找具有id或name属性的附近元素(最好是父元素),可以根据关系找到目标元素。XPath还可用于通过id和name以外的属性指定元素。
driver.find_element_by_xpath("//div[@id='pane-news']/ul[1]/li[1]/a")
如果我们所要定位的元素是一个链接文本,那么我们便可以使用这个语句进行定位。同样,我们以崔天凯的新闻为例:
driver.find_element_by_link_text("驻美大使崔天凯:保一国两制前途 还香港稳定发展")
当我们使用第四句语句进行定位的话,需要把文本打全,比较麻烦,那么我们就可以使用这句语句,只要输入部分内容就能定位:
driver.find_element_by_partial_link_text("驻美大使崔天凯")
当我们需要通过标签名称去查找元素时,就可以使用这句代码。使用这句语句,它将会返回符合给定标签的第一个元素。
driver.find_element_by_tag_name("li")
如果我们要按类属性名称查找元素时,就可以使用这句语句,将返回具有匹配类属性名称的第一个元素。
driver.find_element_by_class_name("bold-item")
我们也可以通过CSS选择器语法查找元素,将返回具有匹配CSS选择器的第一个元素。
driver.find_element_by_css_selector ("li.bold-item")
如果我们想要查找的是符合某一条件的所有元素,我们可以在以上八个语法中的element改成elements即可,这里以第六句语法为例,其它的可自行尝试:
driver.find_elements_by_tag_name("li")
今天就把Selenium的安装以及八个元素定位语法介绍完了,在下一篇将介绍对元素的操作语法,例如本文中用到的text。如果本文对你有帮助,还请点个**“点赞”、“收藏”**支持下呗。