selenium是使用javascript编写,主要用来进行web应用程序测试,在python爬虫中可以用来进行动态网页爬取,解决爬虫中的javascript渲染(执行js语句)。总结记录下,以备后面学习

1. selenium基本使用

  安装:pip install selenium

  查看支持的浏览器: 安装完后,命令行输入下面语句,可以查看selenium支持的web浏览器,如下图所示

    from selenium import webdriver

    help(webdriver)

(六)爬虫之使用selenium

  简单使用:这里使用Firefox浏览器,首先得下载Firefox的驱动geckodriver到本地,并将其路径配置到环境变量,下面为简单使用。

from selenium import webdriver

browser = webdriver.Firefox()  #firefox驱动
browser.get("https://www.zhihu.com/signup?next=%2F")  #浏览器打开网页
print(browser.page_source)  #打印网页源代码
browser.close()  # 关闭浏览器

  (报错Message: 'geckodriver' executable needs to be in PATH时,  下载geckodriver,并将其路径配置到环境变量)

  简单使用方法:

#简单方法
driver = = webdriver.Firefox() 初始化浏览器
driver.get("http://www.example.com") #打开网页
driver.forward() #前进
driver.back()  #后退
driver.close() #关闭浏览器

  使用cookie:

# Go to the correct domain
driver.get("http://www.example.com")

# Now set the cookie. This one's valid for the entire domain
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_cookie(cookie)  #添加cookie,全局的cookie(对该域名下所有url)

# And now output all the available cookies for the current URL
driver.get_cookies()  #获取cookie

2.查找元素

        webdriver打开网页后,可以查找网页中的单个或多个元素,并对其操作,下面为常用方法

https://selenium-python.readthedocs.io/locating-elements.html

#单个元素
find_element_by_id()   通过id属性
find_element_by_name()   通过name属性
find_element_by_xpath()      xpath选择器
find_element_by_link_text()  通过超链接文本定位
find_element_by_partial_link_text()  通过部分超链接文本定位
find_element_by_tag_name()   标签名称
find_element_by_class_name()  类选择器
find_element_by_css_selector()    css选择器

#多个元素  (返回一个列表)
find_elements_by_name
find_elements_by_id
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

  通过元素name属性查找:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <input name="continue" type="button" value="Clear" />
  </form>
</body>
<html>

username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
find_element_by_name

相关文章: