0


Python爬虫 Selenium(六)

文章目录

简介

1.什么是selenium?

(1)Selenium是一个用于Web应用程序测试的工具。

(2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。

(3)支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试。

(4)selenium也是支持无界面浏览器操作的。

2.为什么使用selenium?

模拟浏览器功能,自动执行网页中的js代码,实现动态加载

在真实网页系统中,很多数据是由js加载进入html页面,部分数据是通过懒加载实现,如果直接爬去源码是无法获取到相对应的dom的数据

示例

安装

  1. 如何安装selenium?
  2. (1)操作谷歌浏览器驱动下载地址
  3. http://chromedriver.storage.googleapis.com/index.html
  4. (2)谷歌驱动和谷歌浏览器版本之间的
  5. 映射表
  6. http://blog.csdn.net/huilan_same/article/details/51896672
  7. (3)查看谷歌浏览器版本
  8. 谷歌浏览器右上角‐‐>帮助‐‐>关于
  9. (4)pip install selenium

使用

  1. (1)导入:
  2. from selenium import webdriver
  3. (2)创建谷歌浏览器操作对象:
  4. path = 谷歌浏览器驱动文件路径
  5. browser = webdriver.Chrome(path)
  6. (3)访问网址
  7. url = 要访问的网址 browser.get(url)

元素定位、交互

selenium的元素定位?元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法

方法:

  1. 1.find_element_by_id
  2. eg:button =browser.find_element_by_id('su')
  3. 2.find_elements_by_name
  4. eg:name = browser.find_element_by_name('wd')
  5. 3.find_elements_by_xpath
  6. eg:xpath1 = browser.find_elements_by_xpath('//input[@id="su"]')
  7. 4.find_elements_by_tag_name
  8. eg:names = browser.find_elements_by_tag_name('input')
  9. 5.find_elements_by_css_selector
  10. eg:my_input = browser.find_elements_by_css_selector('#kw')[0]
  11. 6.find_elements_by_link_text
  12. eg:browser.find_element_by_link_text("新闻")
  13. eg:browser.find_element_by_link_text("新闻")
  14. 6. 访问元素信息 获取元素属性
  15. .get_attribute('class') 获取元素文本
  16. .text 获取内容
  17. .tag_name 获取标签名

交互

  1. 点击:click()
  2. 输入:send_keys()
  3. 后退操作:browser.back()
  4. 前进操作:browser.forword()
  5. 模拟JS滚动:js='document.documentElement.scrollTop=100000'
  6. browser.execute_script(js) 执行js代码
  7. 获取网页代码:page_source
  8. 退出:browser.quit()

4.72版本示例(注意语法差别)

  1. import time
  2. from selenium import webdriver
  3. # 驱动地址
  4. from selenium.webdriver.common.by import By
  5. path = 'chromedriver'
  6. # 访问地址
  7. url = 'https://www.baidu.com/'
  8. # 创建谷歌浏览器操作对象:
  9. browser = webdriver.Chrome(path)
  10. # 打开页面
  11. browser.get(url)
  12. # 实现自动输入周杰伦翻译效果
  13. input = browser.find_element(by=By.ID, value='kw')
  14. input.send_keys('周杰伦')
  15. button = browser.find_element(by=By.ID, value='su')
  16. button.click()
  17. time.sleep(2)
  18. # 执行js代码 滚动到底部
  19. js = 'document.documentElement.scrollTop=100000'
  20. browser.execute_script(js)
  21. # 点击下一页
  22. page1 = browser.find_element(by=By.XPATH, value='//*[@id="page"]/div/a[8]/span')
  23. page1.click()
  24. time.sleep(5)
  25. js = 'document.documentElement.scrollTop=100000'
  26. browser.execute_script(js)
  27. time.sleep(5)
  28. # 回退
  29. browser.back()
  30. time.sleep(5)

Chrome handless

Chrome-headless模式,Google针对Chrome浏览器 59版新增加的一种模式,可以让你不打开UI界面的情况下使用Chrome浏览器,所以运行效果与Chrome保持完美一致

示例

  1. import time
  2. # 驱动地址
  3. from selenium.webdriver.common.by import By
  4. # 这个是浏览器自带的 不需要我们再做额外的操作
  5. from selenium.webdriver.chrome.options import Options
  6. from selenium import webdriver
  7. # 封装
  8. def share_browser(): # 初始化
  9. chrome_options = Options()
  10. # 注意参数这个版本不需要--
  11. chrome_options.add_argument('headless')
  12. chrome_options.add_argument('disable‐gpu')
  13. # 浏览器的安装路径 打开文件位置 #这个路径是你谷歌浏览器的路径
  14. # path = r'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
  15. # chrome_options.binary_location = path
  16. browser = webdriver.Chrome(options=chrome_options,)
  17. return browser
  18. path = 'chromedriver'
  19. # 访问地址
  20. url = 'https://www.baidu.com/'
  21. # 创建谷歌浏览器操作对象:
  22. browser = share_browser()
  23. # 打开页面
  24. browser.get(url)
  25. browser.save_screenshot('baidu1.png')
  26. # 实现自动输入周杰伦翻译效果
  27. input = browser.find_element(by=By.ID, value='kw')
  28. input.send_keys('周杰伦')
  29. button = browser.find_element(by=By.ID, value='su')
  30. button.click()
  31. browser.save_screenshot('baidu2.png')
  32. time.sleep(2)
  33. # 执行js代码 滚动到底部
  34. js = 'document.documentElement.scrollTop=100000'
  35. browser.execute_script(js)
  36. # 点击下一页
  37. page1 = browser.find_element(by=By.XPATH, value='//*[@id="page"]/div/a[8]/span')
  38. page1.click()
  39. browser.save_screenshot('baidu3.png')
  40. time.sleep(5)
  41. js = 'document.documentElement.scrollTop=100000'
  42. browser.execute_script(js)
  43. browser.save_screenshot('baidu4.png')
  44. time.sleep(5)
  45. # 回退
  46. browser.back()
  47. browser.save_screenshot('baidu5.png')
  48. time.sleep(5)
标签: python 爬虫 selenium

本文转载自: https://blog.csdn.net/qq_28325291/article/details/128712487
版权归原作者 冲a铁子 所有, 如有侵权,请联系我们删除。

“Python爬虫 Selenium(六)”的评论:

还没有评论