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 合并文件的具体实例
Aug 08 Python
django实现前后台交互实例
Aug 07 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python模拟表单提交登录图书馆
Apr 27 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
Python爬取某拍短视频
Jun 11 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php遍历CSV类实例
2015/04/14 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
Python 元类实例解析
2018/04/04 Python
Python如何实现定时器功能
2020/05/28 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
保密工作责任书
2014/04/16 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
致运动员赞词
2015/07/22 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python