python+selenium+PhantomJS抓取网页动态加载内容


Posted in Python onFebruary 25, 2020

环境搭建

准备工具:pyton3.5,selenium,phantomjs

我的电脑里面已经装好了python3.5

安装Selenium

pip3 install selenium

安装Phantomjs

按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下

使用selenium+phantomjs实现简单爬虫

from selenium import webdriver
 
 
driver = webdriver.PhantomJS()
driver.get('http://www.baidu.com')  #加载网页
data = driver.page_source  #获取网页文本
driver.save_screenshot('1.png')  #截图保存
print(data)
driver.quit()

selenium+phantomjs的一些使用方法

设置请求头里的user-Agent

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
 
 
dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragent
dcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根据需要设置具体的浏览器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息
driver.get('http://www.baidu.com')  #加载网页
data = driver.page_source  #获取网页文本
driver.save_screenshot('1.png')  #截图保存
print(data)
driver.quit()

请求超时设置

webdriver类中有三个和时间相关的方法:

1.pageLoadTimeout 设置页面完全加载的超时时间,完全加载即完全渲染完成,同步和异步脚本都执行完

2.setScriptTimeout 设置异步脚本的超时时间

3.implicitlyWait 识别对象的智能等待时间

from selenium import webdriver
 
driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get('http://www.baidu.com')
print(driver.title)
driver.quit()

设置浏览器窗口大小

调用启动的浏览器不是全屏的,有时候会影响我们的某些操作,所以我们可以设置全屏

driver.maximize_window() #设置全屏
driver.set_window_size('480','800') #设置浏览器宽480,高800

元素定位

from selenium import webdriver
 
driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get('http://www.baidu.com')
try:
  driver.get('http://www.baidu.com')
  driver.find_element_by_id('kw') # 通过ID定位
  driver.find_element_by_class_name('s_ipt') # 通过class属性定位
  driver.find_element_by_name('wd') # 通过标签name属性定位
  driver.find_element_by_tag_name('input') # 通过标签属性定位
  driver.find_element_by_css_selector('#kw') # 通过css方式定位
  driver.find_element_by_xpath("//input[@id='kw']") # 通过xpath方式定位
  driver.find_element_by_link_text("贴吧") # 通过xpath方式定位
  print(driver.find_element_by_id('kw').tag_name ) # 获取标签的类型
except Exception as e:
  print(e)
driver.quit()

操作浏览器前进或后退

from selenium import webdriver
driver = webdriver.PhantomJS()
try:
  driver.get('http://www.baidu.com')  #访问百度首页
  driver.save_screenshot('1.png')
  driver.get('http://www.sina.com.cn') #访问新浪首页
  driver.save_screenshot('2.png')
  driver.back()              #回退到百度首页
  driver.save_screenshot('3.png')
  driver.forward()            #前进到新浪首页
  driver.save_screenshot('4.png')
except Exception as e:
  print(e)
driver.quit()

到此这篇关于python+selenium+PhantomJS抓取网页动态加载内容的文章就介绍到这了,更多相关python PhantomJS抓取内容内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的错误处理
Apr 10 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python 使用with上下文实现计时功能
Mar 09 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python多图片合并PDF的方法
Jan 03 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
django迁移文件migrations的实现
Mar 31 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
Python configparser模块应用过程解析
Aug 14 Python
python glom模块的使用简介
Apr 13 Python
python numpy生成等差数列、等比数列的实例
Feb 25 #Python
信号生成及DFT的python实现方式
Feb 25 #Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 #Python
python生成任意频率正弦波方式
Feb 25 #Python
python numpy库linspace相同间隔采样的实现
Feb 25 #Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 #Python
基于pygame实现童年掌机打砖块游戏
Feb 25 #Python
You might like
PHP中基本符号及使用方法
2010/03/23 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
js 判断 enter 事件
2009/02/12 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
对于js垃圾回收机制的理解
2017/09/14 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
python动态网页批量爬取
2016/02/14 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python+mysql实现教务管理系统
2019/02/20 Python
python实现按首字母分类查找功能
2019/10/31 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
体育教师自荐信范文
2013/12/16 职场文书
怎样写离婚协议书
2014/09/10 职场文书
中秋客户感谢信
2015/01/22 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书