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 self,cls,decorator的理解
Jul 13 Python
python检测远程udp端口是否打开的方法
Mar 14 Python
对命令行模式与python交互模式介绍
May 12 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
python实现电子书翻页小程序
Jul 23 Python
python 动态迁移solr数据过程解析
Sep 04 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python基于tkinter实现gif录屏功能
May 19 Python
Windows安装Anaconda3的方法及使用过程详解
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
建立动态的WML站点(二)
2006/10/09 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php实现中文转数字
2016/02/18 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
python生成日历实例解析
2014/08/21 Python
web.py中调用文件夹内模板的方法
2014/08/26 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
女大学生自我鉴定
2013/12/09 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
骨干教师事迹材料
2014/12/17 职场文书
大连星海广场导游词
2015/02/10 职场文书
python基础之类属性和实例属性
2021/10/24 Python
redis数据结构之压缩列表
2022/03/21 Redis
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL