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的Flask框架中实现全文搜索功能
Apr 20 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
用python开发一款操作MySQL的小工具
May 12 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正则走开
2008/03/15 PHP
PHP 类型转换函数intval
2009/06/20 PHP
PHP入门学习笔记之一
2010/10/12 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
JQuery toggle使用分析
2009/11/16 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
详解在React-Native中持久化redux数据
2019/05/22 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
浅谈vue权限管理实现及流程
2020/04/23 Javascript
编程语言Python的发展史
2014/09/26 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
Python检测网络延迟的代码
2018/05/15 Python
python爬取微博评论的实例讲解
2021/01/15 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
环保建议书200字
2014/05/14 职场文书
2014年林业工作总结
2014/12/05 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
仓库管理制度范本
2015/08/04 职场文书
导游词之杭州西湖
2019/09/19 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS