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()
Selenium爬虫代码
 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()
PhanmJs爬虫代码
 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()
自动登录QQ空间
 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)
动态点击滚动条获取豆瓣电影数据

 

posted @ 2018-12-12 21:01  北伽  阅读(189)  评论(0编辑  收藏  举报