什么是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)

动态点击滚动条获取豆瓣电影数据

转载于:https://www.cnblogs.com/duanhaoxin/p/10111002.html

Selenium+phanmJs 操作浏览器 爬取数据相关推荐

  1. python selenium不启动浏览器 爬取数据的方法

    为浏览器驱动 添加一个无头参数.可以实现不开启浏览器 爬取网页 最新版的selenium已经不再支持PhantomJS 源码如下: # -*- coding:utf-8 -*-from seleniu ...

  2. Python爬虫:Selenium模拟Chrome浏览器爬取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

  3. Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息

    Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息 基础: Python 爬虫 之 Selenium.webdriver 的安装,以及模拟打开操作 ...

  4. python获取登录按钮_Python:Selenium模拟Chrome浏览器抓取淘宝商品信息

    对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...

  5. Python使用selenium模拟浏览器爬取某查查数据

    在使用爬虫爬取某查查的数据的时候,会被识别到,进行反爬限制,最后使用selenium模拟浏览器进行爬取. 这里解决办法主要使用selenium打开浏览器,模拟人操作进行爬取,代码: ua = 'Moz ...

  6. Python实训day07am【爬取数据接口、webdriver、自动化测试工具selenium】

    Python实训-15天-博客汇总表 目录 1.网络爬虫-课后练习题 1.1.写法1 1.2.写法2 2.Selenium自动化测试工具 2.1.安装工具 2.2.命令行操作 直接爬取HTML (30 ...

  7. Python爬虫实战使用scrapy与selenium来爬取数据

    系列文章目录 实战使用scrapy与selenium来爬取数据 文章目录 系列文章目录 前言 一.前期准备 二.思路与运行程序 1.思路 2.运行程序 三.代码 1.代码下载 2.部分代码 总结 前言 ...

  8. python采集直播间数据_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  9. selenium模拟浏览器-----爬取马蜂窝地区全部景点

    为什么使用selenium 在前面的文章中,我们了解了Ajax的分析和爬取方式,但是,对于参数加密复杂的网页来说,用之前构造请求头的方法来爬取数据未免显得困难,所以这里我们选择了使用selenium. ...

最新文章

  1. rsync单项同步文件
  2. 台风怎么看内存颗粒_生态板、密度板、颗粒板各有好处,看你怎么用了!
  3. Algorithm之EM:Expectation Maximization简介、代码实现
  4. 一个简单的小技巧,监控网页所有动态标签创建的调用处
  5. 有些图,只要看错一眼就再也回不去了!
  6. 2018/7/16-纪中某C组题【jzoj4024,jzoj4025,jzoj2136,jzoj2137】
  7. mysql 选择特定的表_MySQL选择具有多个特定列的所有表
  8. C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
  9. docker 安装
  10. 精心收集的jQuery常用的插件1000
  11. pktgen-dpdk 使用笔记
  12. 室内 Beacon定位室外 GPS 定位 大型场馆融合定位方案
  13. 【bzoj4094】【洛谷3097】Optimal Milking
  14. 自定义拍照时 拍照界面_女研究生劝父亲盖房时把围墙退后三尺,新房成网红,一天20人拍照...
  15. Html5开发小游戏看你有多色
  16. 我终于解救了系统盘ORZ
  17. php-resque 简单的php消息队列
  18. 种类并查集(POJ1703)
  19. 社区社群运营,如何打造火爆营销的方法?
  20. C# 超级简单的Telnet (TcpClient)客户端

热门文章

  1. 多线程导出excel_【开源资讯】MyExcel 3.7.0 发布,屏蔽多线程处理细节
  2. 计算机二级日月潭操作步骤,计算机二级考试真题-PPT-文小雨-台湾日月潭介绍
  3. date转换成string hive_[转] String to Date conversion in hive - 在 Hive 中各种字符串转换成日期格式...
  4. 私有5g网络_欧洲通过FUDGE5G的启动来支持工业4.0的云原生私有5G
  5. 执行transact mysql_创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL
  6. 我们究竟还要学习哪些Android知识?专题解析
  7. python【Numpy科学计算库】连女朋友都会用的Numpy(真の能看懂~!)
  8. Android移动开发之【Android实战项目】activity生命周期与Java中@Override的作用
  9. 谷歌生物医学专用翻译_文献翻译|知云翻译,写论文必备~
  10. springboot中pom文件详解