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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
python实现一次创建多级目录的方法
May 15 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Flask缓存静态文件的具体方法
Aug 02 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
Python中的 enumerate和zip详情
May 30 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中file_get_contents高?用法实例
2014/09/24 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
初识Node.js
2014/09/03 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
Python循环语句之break与continue的用法
2015/10/14 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
Python 随机按键模拟2小时
2020/12/30 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
医生进修自我鉴定
2014/01/19 职场文书
停车位租赁协议书
2014/09/24 职场文书
保研推荐信格式
2015/03/25 职场文书
投诉书范文
2015/07/02 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
如何用Python搭建gRPC服务
2021/06/30 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS