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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Django自定义manage命令实例代码
Feb 11 Python
Python3实现的字典遍历操作详解
Apr 18 Python
python线程池threadpool使用篇
Apr 27 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
python函数定义和调用过程详解
Feb 09 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
python pyg2plot的原理知识点总结
Feb 28 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
python缺失值的解决方法总结
Jun 09 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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的历史和优缺点
2006/10/09 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
javascript 数组排序函数
2009/08/20 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
理解javascript封装
2016/02/23 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
layui分页效果实现代码
2017/05/19 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
webpack external模块的具体使用
2018/03/10 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
Python走楼梯问题解决方法示例
2018/07/25 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
python__name__原理及用法详解
2019/11/02 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
集团公司人力资源部岗位职责
2014/01/03 职场文书
远程研修随笔感言
2014/02/10 职场文书
委托书范文
2014/04/02 职场文书
家长会学生演讲稿
2014/04/26 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
思想品德课教学反思
2016/02/24 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP