selenium

1比1模仿浏览器访问页面,是有界面的

  1. import urllib.request
  2. from selenium import webdriver
  3. #创建浏览器操作对象
  4. path = 'msedgedriver.exe'
  5. #创建浏览器
  6. browser = webdriver.Edge(path)
  7. #访问网站
  8. base_url = 'https://www.jd.com'
  9. #打开页面
  10. browser.get(base_url)
  11. #page_source获取网页源码
  12. content = browser.page_source
  13. print(content)
  14. from selenium import webdriver
  15. #设置文件路径
  16. path = 'msedgedriver.exe'
  17. #设置模拟浏览器
  18. browser = webdriver.Edge(path)
  19. base_url = 'https://www.baidu.com'
  20. #访问网页
  21. browser.get(base_url)
  22. #元素定位
  23. #根据id找到对象 ★
  24. button = browser.find_element_by_id('su')
  25. print(button)
  26. #根据标签属性的属性值来获取对象的
  27. button = browser.find_element_by_name('wd')
  28. print(button)
  29. #根据xpath语句来获取对象 ★
  30. button = browser.find_element_by_xpath('//input[@id="su"]')
  31. print(button)
  32. #根据标签名字来获取对象
  33. button = browser.find_element_by_tag_name('input')
  34. print(button)
  35. #使用bs4的语法来实现的 ★
  36. button = browser.find_element_by_css_selector('#su')
  37. print(button)
  38. #根据a标签的名称获取对象
  39. button = browser.find_element_by_link_text('直播')
  40. print(button)
  41. from selenium import webdriver
  42. #设置文件路径
  43. path = 'msedgedriver.exe'
  44. browser = webdriver.Edge(path)
  45. #设置访问的网页
  46. base_url ='http://www.baidu.com'
  47. #开始访问网页
  48. browser.get(base_url)
  49. #获取元素一些变量
  50. input = browser.find_element_by_id('su')
  51. #获取元素属性
  52. print(input.get_attribute('class'))
  53. #获取元素文本
  54. a = browser.find_element_by_link_text('新闻')
  55. print(a.text)
  56. #获取元素tag标签
  57. print(input.tag_name)
  58. from selenium import webdriver
  59. import time
  60. #创建浏览器对象
  61. path = 'msedgedriver.exe'
  62. #设置需要用到的浏览器类型
  63. browser = webdriver.Edge(path)
  64. #设置需要打开的url
  65. base_url = 'https://www.baidu.com'
  66. browser.get(base_url)
  67. #当打开浏览器时休息两秒
  68. time.sleep(2)
  69. #获取文本框的对象
  70. input = browser.find_element_by_id('kw')
  71. #在文本框输入周杰伦
  72. input.send_keys('周杰伦') #发送一个值为周杰伦
  73. time.sleep(2)
  74. #获取百度一下的按钮
  75. button = browser.find_element_by_id('su')
  76. #点击按钮
  77. button.click()
  78. time.sleep(2)
  79. #滑倒底部
  80. js_bottom = 'document.documentElement.scrollTop=100000'
  81. browser.execute_script(js_bottom)
  82. time.sleep(2)
  83. #获取下一页那妞
  84. next_page = browser.find_element_by_xpath('//a[@class="n"]')
  85. #点击下一页
  86. next_page.click()
  87. time.sleep(2)
  88. #回到上一页
  89. browser.back()
  90. time.sleep(2)
  91. #再次回去
  92. browser.forward()
  93. time.sleep(2)
  94. #退出
  95. browser.quit()

常用定位八大元素

  1. # id id数值定位
  2. driver.find_element(By.ID, 'kw').send_keys("蕾姆")
  3. # name name数值定位
  4. driver.find_element(By.NAME, 'wd').send_keys("蕾姆")
  5. # link_text 超链接名称定位
  6. driver.find_element(By.LINK_NAME, '新闻').click()
  7. # partail_link_text 模糊超链接名称定位
  8. driver.find_element(By.PARTAIL_LINK_NAME, '新闻').click()
  9. # xpath 定位
  10. # 1 索引定位
  11. //from/span[1]/input
  12. # 2 属性定位
  13. //input[@autocomplete='off']
  14. # 3 通配符定位
  15. //*[@autocomplete='off']
  16. //*[*='off']
  17. # 4 部分属性值定位
  18. //*[start-with(@autocomplete,'of')] # 属性以of开头的元素
  19. //*[substring(@autocomplete,2)=='ff'] # 以xx结尾
  20. //*[contains(@autocomplete,'of')] # 包含of
  21. # 5 文本定位
  22. //span[text()='文本']