Python爬虫之Selenium库的使用方法

共 6903字,需浏览 14分钟

 ·

2021-01-25 17:02

这篇文章主要介绍了Python爬虫之Selenium库的使用方法,帮助大家更好的理解和使用爬虫,感兴趣的朋友可以了解下

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。(摘自百科)

  1. # 基本使用

  2. from selenium import webdriver

  3. from selenium.webdriver.common.by import By

  4. from selenium.webdriver.common.keys import Keys

  5. from selenium.webdriver.support import expected_conditions as EC

  6. from selenium.webdriver.support.wait import WebDriverWait

  7. browser = webdriver.Chrome()

  8. try:

  9. browser.get('https://www.baidu.com')

  10. input = browser.find_element_by_id('kw')

  11. input.send_keys('Python')

  12. input.send_keys(Keys.ENTER)

  13. wait = WebDriverWait(browser, 10)

  14. wait.until(EC.presence_of_element_located((By.ID, 'content_left')))

  15. print(browser.current_url)

  16. print(browser.get_cookies())

  17. print(browser.page_source)

  18. finally:

  19. browser.close()

  20.  

  21. # 声明浏览器对象

  22. from selenium import webdriver

  23. browser = webdriver.Chrome()

  24. browser = webdriver.Firefox()

  25. browser = webdriver.Edge()

  26. browser = webdriver.PhantomJS()

  27. browser = webdriver.Safari()

  28.  

  29. # 访问页面

  30. from selenium import webdriver

  31. browser = webdriver.Chrome()

  32. browser.get('https://www.taobao.com')

  33. print(browser.page_source)

  34. browser.close()

  35.  

  36. # 查找元素

  37. # 单个元素

  38. from selenium import webdriver

  39. browser = webdriver.Chrome()

  40. browser.get('https://www.taobao.com')

  41. # 下面三个效果是一样的

  42. input_first = browser.find_element_by_id('q')

  43. input_second = browser.find_element_by_css_selector('#q')

  44. input_third = browser.find_element_by_xpath('//*[@id="q"]')

  45. print(input_first)

  46. print(input_second)

  47. print(input_third)

  48. browser.close()

  49.  

  50. from selenium import webdriver

  51. from selenium.webdriver.common.by import By

  52. browser = webdriver.Chrome()

  53. browser.get('https://www.taobao.com')

  54. input_first = browser.find_element(By.ID, 'q')

  55. print(input_first)

  56. browser.close()

  57.  

  58. # 多个元素

  59. from selenium import webdriver

  60. browser = webdriver.Chrome()

  61. browser.get('https://www.taobao.com')

  62. lis = browser.find_elements_by_css_selector('.service-bd li')

  63. print(lis)

  64. browser.close()

  65.  

  66. from selenium import webdriver

  67. from selenium.webdriver.common.by import By

  68. browser = webdriver.Chrome()

  69. browser.get('https://www.taobao.com')

  70. lis = browser.find_elements(By.CSS_SELECTOR, '.service-bd li')

  71. print(lis)

  72. browser.close()

  73.  

  74. # 元素交互操作

  75. # 对获取的元素调用交互方法

  76. from selenium import webdriver

  77. import time

  78. browser = webdriver.Chrome()

  79. browser.get('https://www.taobao.com')

  80. input = browser.find_element_by_id('q')

  81. input.send_keys('笔记本电脑')

  82. time.sleep(5)

  83. input.clear()

  84. input.send_keys('iPad')

  85. button = browser.find_element_by_class_name('btn-search')

  86. # button.click()

  87.  

  88. # 交互动作

  89. # 将动作附加到动作链中串行执行

  90. from selenium import webdriver

  91. from selenium.webdriver import ActionChains

  92. browser = webdriver.Chrome()

  93. url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"

  94. browser.get(url)

  95. browser.switch_to.frame('iframeResult')

  96. source = browser.find_element_by_css_selector('#draggable')

  97. target = browser.find_element_by_css_selector('#droppable')

  98. actions = ActionChains(browser)

  99. actions.drag_and_drop(source, target)

  100. actions.perform()

  101.  

  102. # 执行JavaScript

  103. from selenium import webdriver

  104. browser = webdriver.Chrome()

  105. browser.get("https://www.zhihu.com/explore")

  106. browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')

  107. browser.execute_script('alert("To Bottom")')

  108.  

  109. # 获取元素信息

  110. # 获取属性

  111. from selenium import webdriver

  112. from selenium.webdriver import ActionChains

  113. browser = webdriver.Chrome()

  114. browser.get("https://www.zhihu.com/explore")

  115. logo = browser.find_element_by_id('zh-top-link-logo')

  116. print(logo)

  117. print(logo.get_attribute('class'))

  118.  

  119. # 获取文本值

  120. from selenium import webdriver

  121. browser = webdriver.Chrome()

  122. browser.get('https://www.zhihu.com/explore')

  123. input = browser.find_element_by_class_name('zu-top-add-question')

  124. print(input.text)

  125.  

  126. # 获取ID、位置、标签名、大小

  127. from selenium import webdriver

  128. browser = webdriver.Chrome()

  129. browser.get('https://www.zhihu.com/explore')

  130. input = browser.find_element_by_class_name('zu-top-add-question')

  131. print(input.id)

  132. print(input.location)

  133. print(input.tag_name)

  134. print(input.size)

  135.  

  136. # Frame

  137. import time

  138. from selenium import webdriver

  139. from selenium.common.exceptions import NoSuchElementException

  140. browser = webdriver.Chrome()

  141. browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

  142. browser.switch_to.frame('iframeResult')

  143. source = browser.find_element_by_css_selector('#draggable')

  144. print(source)

  145. try:

  146. logo = browser.find_element_by_class_name('logo')

  147. except NoSuchElementException:

  148. print('NO LOGO')

  149. browser.switch_to.parent_frame()

  150. logo = browser.find_element_by_class_name('logo')

  151. print(logo)

  152. print(logo.text)

  153.  

  154. # 等待

  155. # 隐式等待

  156. # 当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后抛出找不到元素的异常,

  157. # 换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0

  158. from selenium import webdriver

  159. browser = webdriver.Chrome()

  160. browser.implicitly_wait(10)

  161. browser.get('https://www.zhihu.com/explore')

  162. input = browser.find_element_by_class_name('zu-top-add-question')

  163. print(input)

  164.  

  165. # 显示等待

  166. from selenium import webdriver

  167. from selenium.webdriver.common.by import By

  168. from selenium.webdriver.support.ui import WebDriverWait

  169. from selenium.webdriver.support import expected_conditions as EC

  170. browser = webdriver.Chrome()

  171. browser.get('https://www.taobao.com/')

  172. wait = WebDriverWait(browser, 10)

  173. input = wait.until(EC.presence_of_element_located((By.ID, 'q')))

  174. button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))

  175. print(input, button)

  176.  

  177. # 前进后退

  178. import time

  179. from selenium import webdriver

  180. browser = webdriver.Chrome()

  181. browser.get('https://www.baidu.com')

  182. browser.get('https://www.taobao.com')

  183. browser.get('https://www.python.org')

  184. browser.back()

  185. time.sleep(5)

  186. browser.forward()

  187. browser.close()

  188.  

  189. # Cookies

  190. from selenium import webdriver

  191. browser = webdriver.Chrome()

  192. browser.get('https://www.zhihu.com/explore')

  193. print(browser.get_cookies())

  194. browser.add_cookie({'name':'name', 'domain':'www.zhihu.com', 'value':'germey'})

  195. print(browser.get_cookies())

  196. browser.delete_all_cookies()

  197. print(browser.get_cookies())

  198.  

  199. # 选项卡管理

  200. import time

  201. from selenium import webdriver

  202. browser = webdriver.Chrome()

  203. browser.get('https://www.baidu.com')

  204. browser.execute_script('window.open()')

  205. print(browser.window_handles)

  206. browser.switch_to_window(browser.window_handles[1])

  207. browser.get('https://www.taobao.com')

  208. time.sleep(5)

  209. browser.switch_to_window(browser.window_handles[0])

  210. browser.get('https://python.org')

  211.  

  212. # 异常处理

  213. from selenium import webdriver

  214. browser = webdriver.Chrome()

  215. browser.get('https://www.baidu.com')

  216. browser.find_element_by_id('hello')

  217.  

  218. from selenium import webdriver

  219. from selenium.common.exceptions import TimeoutException, NoSuchElementException

  220. browser = webdriver.Chrome()

  221. try:

  222. browser.get('https://www.baidu.com')

  223. except TimeoutException:

  224. print('Time Out')

  225. try:

  226. browser.find_element_by_id('hello')

  227. except NoSuchElementException:

  228. print('No Element')

  229. finally:

  230. browser.close()

以上就是Python爬虫之Selenium库的使用方法的详细内容

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持


万水千山总是情,点个【在看】行不行

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜

浏览 46
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报