selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

pip3 install selenium -i https://pypi.douban.com/simple/

1.PhantomJS+Selenium

Python

1

2

3

4

5

6

7

8

9

10

11

12

fromseleniumimportwebdriver

# driver = webdriver.PhantomJS() # 配置到了环境变量

driver=webdriver.PhantomJS(executable_path="/apps/phantomjs")# 指定PhantomJS执行程序的路径

driver.get('http://www.baidu.com/')# 访问

page=driver.page_source# 网页源码

tableData=driver.find_elements_by_tag_name('tableData').get_attribute('innerHTML')# 获取元素的html源码

tableI=driver.find_elements_by_tag_name('tableData').get_attribute('id')# 获取元素的id值

tableI=driver.find_elements_by_tag_name('tableData').text# 获取元素的文本内容

driver.quit()# 退出浏览器

2.Chrome+Selenium

要使用Chrome浏览器的无头模式驱动,须根据当前浏览器的版本下载,即本地须已有一个正常的Chrome浏览。

http://npm.taobao.org/mirrors/chromedriver ,当前Chrome版本可以从 chrome://settings/help 查看。

将之安装在一个环境变量目录里(或新配置) 如 $JAVA_HOME/bin 下。如果不放到环境变量目录里,则须要在代码中指定这个驱动文件的路径。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

fromseleniumimportwebdriver

option=webdriver.ChromeOptions()# 1.配置参数

# option.set_headless() # 设为无头模式

option.add_argument("--headless")# 无头模式

option.add_argument("--no-sandbox")

option.add_argument("--disable-gpu")

option.add_argument("disable-infobars")

# browser = webdriver.Chrome(executable_path="chromedriver路径", options=option)  # 2.创建浏览器

browser=webdriver.Chrome(options=option)# 2.创建浏览器

browser.get("https://www.baidu.com/")# 3.请求连接

html=browser.page_source# 拿到页面

browser.close()# 关闭连接

browser.quit()

3.Firefox+Selenium

首先本地安装正常的Firefox浏览器。然后在 https://github.com/mozilla/geckodriver/releases 下载一个无头驱动geckodriver,将之安装在一个环境变量目录里(或新配置)。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

fromseleniumimportwebdriver

option=webdriver.FirefoxOptions()# 1.配置参数

option.set_headless()# 无头模式

option.add_argument("--no-sandbox")

option.add_argument("--disable-gpu")

option.add_argument("disable-infobars")

option.add_argument("--proxy-server="+proxy)# 代理 协议://host:port 如 "http://www.baidu.com"

# browser = webdriver.Firefox(executable_path="geckodriver路径", options=option)

browser=webdriver.Firefox(options=option)# 2.创建浏览器

browser.get("https://www.baidu.com/")

html=browser.page_source

browser.close()

browser.quit()

4.Pyppeteer

selenium的保护机制不允许跨域cookies保存。以及登录的时候必须先打开网页,然后加载cookies,再刷新,这种方式很不友好。并且有些网页会检测到是否是使用了selenium。

Puppeteer是Chrome开发团队在2017年发布的一个Node.js包,用来模拟Chrome浏览器,可以无头方式运行,https://github.com/puppeteer/puppeteer。

Pyppeteer是Puppeteer的Python移植,API跟JavaScript版本基本一致。

pip3 install pyppeteer -i https://pypi.douban.com/simple/

Pyppeteer通常和异步库asyncio合作使用。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

importasyncio

frompyppeteerimportlaunch

asyncdefmain():

browser=awaitlaunch()# 启动浏览器

page=awaitbrowser.newPage()# 打开新页面tab

awaitpage.goto('https://www.baidu.com')# 访问网址

awaitpage.screenshot({'path':'baidu_screenshot.png'})# 截图。/VSCode的当前项目目录/图片.png

awaitbrowser.close()# 关闭浏览器

asyncio.run(main())

# 如果出现如下错误,是因为首次使用pyppeteer,会下载chromium插件:

# raise MaxRetryError(_pool, url, error or ResponseError(cause))

#     urllib3.exceptions.MaxRetryError:

#         HTTPSConnectionPool(host='storage.googleapis.com', port=443):

#         Max retries exceeded with url: /chromium-browser-snapshots/Mac/588429/chrome-mac.zip (

#             Caused by SSLError(

#                 SSLCertVerificationError(

#                     1,

#                     '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: \

#                     unable to get local issuer certificate (_ssl.c:1056)')))

# 1.

# 从 pyppeteer 库里找到chromium_downloader.py文件,

# /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/chromium_downloader.py

# 2.

# 替换里面

# DEFAULT_DOWNLOAD_HOST = 'https://storage.googleapis.com' 为

# DEFAULT_DOWNLOAD_HOST = 'http://storage.googleapis.com'

-end

python 无头浏览器_python3使用无头浏览器相关推荐

  1. python爬虫之selenium,谷歌无头浏览器

    python爬虫之selenium和PhantomJS 主要的内容 lenium hantomjs 无头浏览器 的懒加载 一 什么是selenium? 介绍 它是python中的一个第三方库,对外提供 ...

  2. python操作无界面的chrome浏览器(转)

    python操作无界面的chrome浏览器 python 操作无界面chrome浏览器 python操作无界面的chrome浏览器.主要利用selenium 和对应自己电脑上Chrome浏览器版本的w ...

  3. python实现外部静态服务器,浏览器通过HTTP与之通信1

        因为网络间通信是基于TCP协议传输数据的,而服务器与浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个tcp服务器,浏览器可以基于http协议进行发送请求和解析.展示浏览器返 ...

  4. python中用selenium进行自动打开浏览器打开指定网页并关闭-带图详解

    一.在电脑上装selenium模块的内容 1.电脑上win+r键打开运行程序,然后输入cmd,打开cmd命令窗口 2.输入:pip install selenium 3.输入完后直接敲回车后会自动安装 ...

  5. python实现外部静态服务器,浏览器通过HTTP与之通信2

            因为网络间通信是基于TCP协议传输数据的,而服务器与浏览器之间通信是基于HTTP协议的,那么下面基于python实现一个tcp服务器,浏览器可以基于http协议进行发送请求和解析.浏览 ...

  6. 关于python的多行注释,启动新浏览器,循环语句乘法口诀

    关于python的多行注释,启动新浏览器,循环语句乘法口诀 1,提问:如何将python写的多行代码改写成注释,进行写下一段代码?这样可以在多个脚本中写东西? 回答:百度了一下,还真有 选中所要注释的 ...

  7. Python爬虫教程-10-UserAgent和常见浏览器UA值

    Python爬虫教程-10-UserAgent和常见浏览器UA值 有时候使用爬虫会被网站封了IP,所以需要去模拟浏览器,隐藏用户身份, UserAgent 包含浏览器信息,用户身份,设备系统信息 Us ...

  8. python selenium启动不了火狐浏览器(firefox)的解决办法

    本文章转载深圳SEO_广东SEO网站优化建设 » python selenium启动不了火狐浏览器(firefox)的解决办法,仅供记录,以备学习. selenium3.0之前的版本,是可以直接打开火 ...

  9. Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息

    Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息 基础: Python 爬虫 之 Selenium.webdriver 的安装,以及模拟打开操作 ...

  10. Python用 selenium 模块控制Firefox浏览器

    Python用 selenium 模块控制Firefox浏览器 需要的东西: Firefox浏览器下载地址: http://getfirefox.com/ selenium包: https://pyp ...

最新文章

  1. 使用strace和ltrace跟踪程序调用
  2. 实战派:一次kafka卡顿事故排查过程!
  3. HEVC视频编码技术
  4. ADO.NET Entity Framework之ObjectQuery
  5. extensions.conf的常用参数配置
  6. python读写大文件 meoryerror_Python – 如何在没有MemoryError的情况下gzip大文本文件?...
  7. html5 content type,Content-Type一览
  8. Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)
  9. JavaScript 学习计划
  10. 在存储过程中执行别的存储过程并获取其返回的结果集
  11. Firday分布式家庭理财系统开发文档(原创作者)
  12. 【论文精读】A view-free image stitching network based on global homography-基于全局单应的无视图图像拼接网络
  13. Linux内核学习(八):linux内核配置与模块
  14. 清明假期,超市可重点主推的品类
  15. 2018.3.4 st
  16. 马兰戈尼晶圆干燥系统
  17. grbl学习之旅---开始
  18. win10下如何为jdk配置环境变量
  19. java全栈系列之JavaSE--命令行传递参数与可变参数021
  20. 定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,在基础上添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息

热门文章

  1. Linux 档案属性与目录配置
  2. VR、RTMP播放器SGPlayer原理详解
  3. 【Chapter 1】什么是软件架构
  4. 上古卷轴5无法启动 因为计算机丢失,《上古卷轴5:天际》无法启动nmm解决方法...
  5. 408计算机考研2012真题解析,2018年计算机408统考考研真题及答案解析.pdf
  6. H5手写板电子签名开发
  7. python-自制单词本导入有道词典
  8. 微观经济学 读书笔记
  9. win7电脑网站服务器,Win7系统
  10. AxureRP9授权码