python+selenium+PhantomJS抓取网页动态加载内容
作者:mdxy-dxy 发布时间:2021-01-28 15:41:24
标签:python,selenium,PhantomJS,动态加载内容
环境搭建
准备工具: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()
0
投稿
猜你喜欢
- 很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子,大家参考使用吧#!/usr/bin/env python# -*- coding
- mysql> SELECT something FROM tbl_name &nb
- 从今天开始起,基督山将和大家一起进入ASP.net 诸多程序的学习中,老实说,.net到底是法宝还是垃圾,我们拭目以待。有任何问题,联络基督
- 楔子在 TensorFlow 中,可以给一个 tensor 增加一个维度、删除一个维度,那么在 Numpy 中该怎么呢?删除维度、增加维度先
- Python upper()方法Python 字符串描述Python upper() 方法将字符串中的小写字母转为大写字母。语法upper(
- 1. 代码完整的源代码:import torchfrom torch import nn# 定义一个LSTM模型class LSTM(nn.
- MySQL报错:错误代码: 1293 Incorrect table definition; there can be only one T
- SQL Server数据库日志清除的两个方法:方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,
- 一、Selenium介绍与配置1.Selenium简介Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具
- 作者: wyh草样出处:https://www.cnblogs.com/wyh0923/p/14084898.html什么是文件文件是系统存
- Pandas处理CSV文件,分为以下几步:读取Pandas文件统计列值出现的次数筛选特定列值遍历数据行绘制直方图(柱状图)读取Pandas文
- 本文实例讲述了PHP实现更改hosts文件的方法。分享给大家供大家参考,具体如下:有这样一个需求,我有多个网址希望在不同的时候对应不同的 i
- 使用字符串创建矩阵是一个很实用的功能,之前自己尝试了很多次的小功能使用这个方法就能够简单实现。创建长度为16的字符串,是为了方便能够在各种数
- 批量修改linux服务器密码,同时生成execl表格#!/usr/bin/env python#coding:utf8#随机生成自定义长度密
- 本文实例讲述了Python松散正则表达式用法。分享给大家供大家参考,具体如下:Python 允许用户利用所谓的 松散正则表达式来完成这个任务
- 问题描述如下:解决方案如下:下图中字体调整为18及以上效果如下:来源:https://blog.csdn.net/appleyuchi/ar
- 滑动验证距离分别获取验证码背景图和滑块图两张照片,然后利用opencv库,通过高斯模糊和Canny算法进行处理,然后通过matchTempl
- 首先说明一下SQL Server内存占用由哪几部分组成。SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer)、
- 1、创建方法:方法一:create table TempTableName或select [字段1,字段2,...,] into TempT
- 本文实现的原理很简单,优化方法是用的梯度下降。后面有测试结果。先来看看实现的示例代码:# coding=utf-8from math imp