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常用的日期时间处理方法示例
Feb 08 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
Python数据类型之Set集合实例详解
May 07 Python
Python简易计算器制作方法代码详解
Oct 31 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
python实现126邮箱发送邮件
May 20 Python
Python 如何创建一个线程池
Jul 28 Python
Python 可视化神器Plotly详解
Dec 26 Python
python中对列表的删除和添加方法详解
Feb 24 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 session会话的安全性分析
2011/09/08 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python计算auc指标实例
2017/07/13 Python
基于Python的PIL库学习详解
2019/05/10 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
药剂专业自荐信范文
2014/04/16 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
国家助学金感谢信
2015/01/21 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技