问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python怎么让phantomjs加载完网页才返回

发布网友 发布时间:2022-05-11 00:45

我来回答

2个回答

热心网友 时间:2022-05-11 02:14

一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览器PhantomJS来抓取javascript渲染的页面,下面实现一个简单的爬取
环境搭建
准备工具:python3.5,selenium,phantomjs
我的电脑里面已经装好了python3.5
安装Selenium

1

pip3 install selenium

安装Phantomjs  
按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下
使用selenium+phantomjs实现简单爬虫

1
2
3
4
5
6
7
8
9

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('') #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot('1.png') #截图保存
print(data)
driver.quit()

selenium+phantomjs的一些使用方法
设置请求头里的user-Agent

1
2
3
4
5
6
7
8
9
10
11
12

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(') #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot('1.png') #截图保存
print(data)
driver.quit()

请求超时设置
webdriver类中有三个和时间相关的方法:
1.pageLoadTimeout 设置页面完全加载的超时时间,完全加载即完全渲染完成,同步和异步脚本都执行完
2.setScriptTimeout 设置异步脚本的超时时间
3.implicitlyWait 识别对象的智能等待时间

1
2
3
4
5
6
7

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get('')
print(driver.title)
driver.quit()

设置浏览器窗口大小
调用启动的浏览器不是全屏的,有时候会影响我们的某些操作,所以我们可以设置全屏

1
2

driver.maximize_window() #设置全屏
driver.set_window_size('480','800') #设置浏览器宽480,高800  

元素定位

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get('')
try:
driver.get('')
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()

操作浏览器前进或后退

1
2
3
4
5
6
7
8
9
10
11
12
13
14

from selenium import webdriver
driver = webdriver.PhantomJS()
try:
driver.get('') #访问百度首页
driver.save_screenshot('1.png')
driver.get('') #
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()
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
婴儿突然变的睡觉多了怎么办 宝宝奶量没增加但是睡眠时间变长怎么回事 孩子出现哪些行为时,意味着孩子进入到猛涨期?家长该做些什么? 1岁宝宝睡眠突然增多是怎么回事 李冰冰与自己小十六岁的男友感情稳定,你会介意找一个比自己小的人结婚... 二月份是什么星座呢 二月份的星座是什么座 十二星座对应月份 2月份是什么座是什么星座 2月份出生的什么星座 萨克斯演奏中的唇颤音与腹颤音有区别吗 唢呐演奏时一般哪种颤音比较常用?还有唢呐腹颤音怎么练习比较容易学会、希望前辈们多多指教、谢谢 唱歌时颤音如何练习?感觉唱完一句后最后一个字颤起来一点感觉很好 有什么联系技巧 梦见恐高腿发软瘫坐在地 梦见腿瘫痪了的人生了孩子以后会走了 为什么总梦见自己双腿瘫痪不能走路? 抵押车是合法车辆吗到底能不能买? 梦见自己腿瘸了,走路一高一低,睡着觉哭醒了,很伤心,请问有什么寓意吗... 梦见一条腿瘸了是怎么回事儿? 梦见自己双腿瘫痪被人丢在全是脑浆的地里是什么意思? buff卖东西怎么只? 请问地图软件如何安装离线地图包? iphone4系统自带的底图所占用的容量大吗?大家觉得有没有必要再去用其他的导航软件,比如高德导航, 我投快递粗心漏写了地址的字,但电话和收件人对,他能收到吗?求大神帮助 南通公交线路 请问什么叫CMYK模式,矢量图又是怎样做的? 新人,没学过这类的东西,能有详细一点的资料介绍或链接都可以 郑州交通技校驾校和郑州交通驾校是一所学校吗??名气怎么样 0流量地图真不费流量吗? 都匀上坝服务区到都匀市 广汉市火车站到四川航天职业技术学院怎么走? 帮我做一套高考日语作文模板,高级点,让老师心服口服 电视连不到WiFi,但是又想让手机投影到电视看怎么办。 9000认证代办哪家能办理啊? 建行app要怎么转账,转账一般多久可以到账 手机建设银行手机到手机转账多久到账 关于热爱生命的短篇作文有哪些 热爱生命的文章有什么 要一篇关于热爱生命的作文 热爱生命的文章 热爱生命文章 热爱生命的文章100字 关于热爱生命的作文150字以下 有关于热爱生命的文章 关于热爱生命的开头作文 写关于热爱生命的作文,四百字。 有关热爱生命的作文500字左右 急!!! 怀孕八个月便秘怎么办 爱爱爱爱 歌词 有一首歌,*有点好听只记得那么几句“因为那是爱,爱爱爱爱爱”求歌名! 已经怀孕八个月了,可是便秘咋办啊?