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开发编码规范
Sep 08 Python
Python实现的金山快盘的签到程序
Jan 17 Python
python发送伪造的arp请求
Jan 09 Python
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
python使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
python执行使用shell命令方法分享
Nov 08 Python
python安装pil库方法及代码
Jun 25 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Python如何读取文件中图片格式
Jan 13 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
详解python 内存优化
Aug 17 Python
Python批量将csv文件转化成xml文件的实例
May 10 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中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP的反射机制实例详解
2017/03/29 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
Node.js模块加载详解
2014/08/16 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
JS中this的4种绑定规则详解
2020/02/04 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
python解析xml文件实例分析
2015/05/27 Python
代码分析Python地图坐标转换
2018/02/08 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
python中threading开启关闭线程操作
2020/05/02 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
应届生.NET方向面试题
2015/05/23 面试题
工商学院毕业生自荐信
2013/11/12 职场文书
医德医风自我评价2015
2015/03/03 职场文书
二审代理词范文
2015/05/25 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python