Selenium+phanmJs 操作浏览器 爬取数据
什么是selenium?
是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作。
环境搭建
安装selenum:pip install selenium
获取某一款浏览器的驱动程序(以谷歌浏览器为例)
谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
下载的驱动程序必须和浏览器的版本统一,大家可以根据http://blog.csdn.net/huilan_same/article/details/51896672中提供的版本映射表进行对应
1 from selenium import webdriver # 是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作。 2 import time 3 4 #创建一个浏览器对象,将驱动程序加载到浏览器中 5 bro=webdriver.Chrome(executable_path=r'D:\爬虫相关\资料\驱动程序\chromedriver_win32\chromedriver.exe') 6 bro.get('https://www.baidu.com') 7 time.sleep(3) 8 #定位百度的文本输入框 9 input_text=bro.find_element_by_id('kw') 10 #在文本框中录入一个关键字 11 input_text.send_keys('丝袜美女') 12 time.sleep(1) 13 #获取搜索id 14 btn=bro.find_element_by_id('su') 15 #执行点击事件 16 btn.click() 17 time.sleep(3) 18 #关掉浏览器 19 bro.quit()
1 #基于phantomJs浏览器的代码示例 无界面 ,但是可以截图 2 from selenium import webdriver # 是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作。 3 import time 4 5 #创建一个浏览器对象,将驱动程序加载到浏览器中 6 bro=webdriver.PhantomJS(executable_path=r'D:\爬虫相关\资料\驱动程序\phantomjs-2.1.1-windows\bin\phantomjs.exe') 7 bro.get('https://www.baidu.com') 8 time.sleep(3) 9 #进行截图 10 bro.save_screenshot('1.png') 11 #定位百度的文本输入框 12 input_text=bro.find_element_by_id('kw') 13 #在文本框中录入一个关键字 14 input_text.send_keys('丝袜美女') 15 time.sleep(1) 16 #获取搜索id 17 btn=bro.find_element_by_id('su') 18 #执行点击事件 19 btn.click() 20 time.sleep(3) 21 bro.save_screenshot('2.png') 22 #打印页面数据 23 print(bro.page_source) 24 #关掉浏览器 25 bro.quit()
1 #登录qq空间 2 bro = webdriver.Chrome(executable_path=r'D:\爬虫相关\资料\驱动程序\chromedriver_win32\chromedriver.exe') 3 bro.get('https://qzone.qq.com/') 4 #观察某个标签如果是存在一个frame中的话,必须使用switch_to进行指定 5 bro.switch_to.frame('login_frame') 6 bro.find_element_by_id('switcher_plogin').click() 7 userName = bro.find_element_by_id('u') 8 userName.send_keys('qq号') 9 pwd = bro.find_element_by_id('p') 10 pwd.send_keys('qq密码') 11 time.sleep(2) 12 btn = bro.find_element_by_id('login_button') 13 btn.click() 14 time.sleep(5) 15 bro.quit()
1 #动态造作浏览器的滚动条获取豆瓣电影中更多的电影详情数据 2 bro=webdriver.Chrome(executable_path=r'D:\爬虫相关\资料\驱动程序\chromedriver_win32\chromedriver.exe') 3 bro.get('https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=') 4 time.sleep(2) 5 #获取页面的滚动条 6 bro.execute_script('window.scrollTo(0,document.body.scrollHeight)') 7 time.sleep(2) 8 page_text=bro.page_source 9 with open('./豆瓣.html','w',encoding='utf-8')as fp: 10 fp.write(page_text)