爬虫之Selenium
简介
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器
作用: 可以让浏览器完成相关自动化的操作
和爬虫的关联:
- 模拟登陆
- 可以获取动态加载的页面数据
编码流程:
- 导包
- 实例化浏览器对象(驱动)
- 制定相关自动化的行为动作
环境安装
- 下载安装selenium:pip install selenium
- 下载浏览器驱动程序:
- http://chromedriver.storage.googleapis.com/index.html
- 查看驱动和浏览器版本的映射关系:
- http://blog.csdn.net/huilan_same/article/details/51896672
简单使用/效果展示
01:
from selenium import webdriver from time import sleep bro = webdriver.Chrome(executable_path='./chromedriver.exe') bro.get('https://www.baidu.com') #获取的连接页面 sleep(2) #标签定位 tag_input = bro.find_element_by_id('kw') tag_input.send_keys('人民币') #标签中输入值 sleep(2) btn = bro.find_element_by_id('su') btn.click() #标签点击事件 sleep(2) bro.quit() #退出
02.
from selenium import webdriver from time import sleep bro = webdriver.Chrome(executable_path='./chromedriver.exe') bro.get('https://xueqiu.com/') sleep(5) #执行js实现滚轮向下滑动 js = 'window.scrollTo(0,document.body.scrollHeight)' #两个参数一个是X轴,一个是y轴,此时用的是Y轴 bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a') a_tag.click() sleep(5) #获取当前浏览器页面数据(动态) print(bro.page_source) bro.quit()
PhantomJs及谷歌无头浏览器无可视化:
#PhantomJs是一款无可视化界面的浏览器(免安装) from selenium import webdriver from time import sleep bro = webdriver.PhantomJS(executable_path=r'C:\Users\Administrator\Desktop\爬虫+数据\爬虫day03\phantomjs-2.1.1-windows\bin\phantomjs.exe') bro.get('https://xueqiu.com/') sleep(2) bro.save_screenshot('./1.png') #执行js实现滚轮向下滑动 js = 'window.scrollTo(0,document.body.scrollHeight)' bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) bro.execute_script(js) sleep(2) bro.save_screenshot('./2.png') # a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a') # bro.save_screenshot('./2.png') # a_tag.click() sleep(2) #获取当前浏览器页面数据(动态) print(bro.page_source) bro.quit() 现在用的很少,知道即可
from selenium import webdriver from time import sleep from selenium.webdriver.chrome.options import Options # 创建一个参数对象,用来控制chrome以无界面模式打开 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=chrome_options) bro.get('https://www.baidu.com') sleep(2) bro.save_screenshot('1.png') #标签定位 tag_input = bro.find_element_by_id('kw') tag_input.send_keys('人民币') sleep(2) btn = bro.find_element_by_id('su') btn.click() sleep(2) print(bro.page_source) bro.quit() 谷歌无头浏览器