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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
详解Python的Django框架中的模版继承
Jul 16 Python
将Python代码打包为jar软件的简单方法
Aug 04 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
python socket网络编程之粘包问题详解
Apr 28 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
Django中URL的参数传递的实现
Aug 04 Python
Django 实现对已存在的model进行更改
Mar 28 Python
python 实现汉诺塔游戏
Nov 28 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JS重要知识点小结
2011/11/06 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python抓取京东图书评论数据
2014/08/31 Python
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
历史系毕业生自荐信
2013/10/28 职场文书
企业消防安全责任书
2014/07/23 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
opencv检测动态物体的实现
2021/07/21 Python
Python中npy和mat文件的保存与读取
2022/04/24 Python