Python爬虫的第二种姿势,Selenium框架案例讲解

开发 后端
本篇给大家详解Python爬虫的第二种姿势,Selenium框架案例的相关内容,希望对你有所帮助!

[[390411]]

selenium使用流程:

1.环境安装:

  1. pip install selenium 

2.下载一个浏览器的驱动程序(谷歌浏览器)

3.实例化一个浏览器对象基本使用

代码

  1. from selenium import webdriver 
  2. from lxml import etree 
  3. from time import sleep 
  4.  
  5. if __name__ == '__main__'
  6.  
  7.     bro = webdriver.Chrome(r"E:\google\Chrome\Application\chromedriver.exe"
  8.     bro.get(url='http://scxk.nmpa.gov.cn:81/xk/'
  9.  
  10.     page_text = bro.page_source 
  11.     tree = etree.HTML(page_text) 
  12.     li_list = tree.xpath('//*[@id="gzlist"]/li'
  13.     for li in li_list: 
  14.         name = li.xpath('./dl/@title')[0] 
  15.         print(name
  16.     sleep(5) 
  17.     bro.quit() 

 基于浏览器自动化的操作代码

#编写基于浏览器自动化的操作代码

  • 发起请求: get(url)
  • 标签定位: find系列的方法
  •  标签交互: send_ keys( 'xxx' )
  •  执行js程序: excute_script('jsCod')
  •  前进,后退: back(),forward( )
  •  关闭浏览器: quit()1

代码

  1. https://www.taobao.com/ 
  2.  
  3. from selenium import webdriver 
  4. from time import sleep 
  5.  
  6. bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe"
  7.  
  8. bro.get(url='https://www.taobao.com/'
  9.  
  10. #标签定位 
  11. search_input = bro.find_element_by_id('q'
  12. sleep(2) 
  13. #执行一组js代码,使得滚轮向下滑动 
  14. bro.execute_script('window.scrollTo(0,document.body.scrollHeight)'
  15. sleep(2) 
  16. #标签交互 
  17. search_input.send_keys('女装'
  18. button = bro.find_element_by_class_name('btn-search'
  19. button.click() 
  20.  
  21. bro.get('https://www.baidu.com'
  22. sleep(2) 
  23. bro.back() 
  24. sleep(2) 
  25. bro.forward() 
  26. sleep(5) 
  27. bro.quit() 

 selenium处理iframe:

  •  如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
  •  动作链(拖动) : from selenium. webdriver import ActionChains
  •  实例化一个动作链对象: action = ActionChains (bro)
  •  click_and_hold(div) :长按且点击操作
  •  move_by_offset(x,y)
  •  perform( )让动作链立即执行
  •  action.release( )释放动作链对象

代码

  1. https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable 
  2.  
  3. from selenium import webdriver 
  4. from time import sleep 
  5. from selenium.webdriver import ActionChains 
  6. bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe"
  7.  
  8. bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
  9.  
  10. bro.switch_to.frame('iframeResult'
  11.  
  12. div = bro.find_element_by_id('draggable'
  13.  
  14. #动作链 
  15. action = ActionChains(bro) 
  16. action.click_and_hold(div) 
  17.  
  18. for i in range(5): 
  19.     action.move_by_offset(17,0).perform() 
  20.     sleep(0.3) 
  21.  
  22. #释放动作链 
  23. action.release() 
  24.  
  25. bro.quit() 

 selenium模拟登陆QQ空间

代码

  1. https://qzone.qq.com/ 
  2.  
  3. from selenium import webdriver 
  4. from time import sleep 
  5.  
  6.  
  7. bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe"
  8. bro.get('https://qzone.qq.com/'
  9. bro.switch_to.frame("login_frame"
  10.  
  11. switcher = bro.find_element_by_id('switcher_plogin'
  12. switcher.click() 
  13.  
  14. user_tag = bro.find_element_by_id('u'
  15. password_tag = bro.find_element_by_id('p'
  16. user_tag.send_keys('1234455'
  17. password_tag.send_keys('qwer123'
  18. sleep(1) 
  19.  
  20. but = bro.find_element_by_id('login_button'
  21. but.click() 

 无头浏览器和规避检测

代码

  1. from  selenium import webdriver 
  2. from time import sleep 
  3. #实现无可视化界面 
  4. from selenium.webdriver.chrome.options import Options 
  5. #实现规避检测 
  6. from selenium.webdriver import ChromeOptions 
  7.  
  8. #实现无可视化界面 
  9. chrome_options = Options() 
  10. chrome_options.add_argument('--headless'
  11. chrome_options.add_argument('--disable-gpu'
  12. #实现规避检测 
  13. option = ChromeOptions() 
  14. option.add_experimental_option('excludeSwitches',['enable-automation']) 
  15.  
  16. bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe",chrome_options=chrome_options,options=option
  17.  
  18. bro.get('https://www.baidu.com'
  19. print(bro.page_source) 
  20. sleep(2) 
  21. bro.quit() 

 【编辑推荐】

 

责任编辑:姜华 来源: 今日头条
相关推荐

2017-12-28 15:20:50

2009-10-23 17:35:16

linux进程管理

2009-08-24 17:24:28

C#创建XML文档

2017-10-26 15:17:06

Python爬虫框架歌曲下载

2009-10-28 13:44:40

linux库文件路径

2014-04-21 10:25:01

大数据

2017-05-15 21:00:15

大数据Scrapy爬虫框架

2017-06-28 15:06:51

PythonLambda函数

2023-11-11 19:34:30

摄像头慢直播

2022-12-12 08:22:51

2020-12-09 10:15:34

Pythonweb代码

2022-07-07 10:33:27

Python姿势代码

2022-06-22 09:44:41

Python文件代码

2020-12-23 10:10:23

Pythonweb代码

2021-02-23 09:54:22

M1苹果电脑恶意软件银雀

2022-07-18 14:33:05

PythonPDF报告

2021-09-06 15:31:01

鸿蒙HarmonyOS应用

2010-01-08 10:52:17

Ubuntu VMwa

2009-06-12 10:18:59

StaticJava

2010-02-01 14:28:37

Python全局变量
点赞
收藏

51CTO技术栈公众号