题外话:

爬虫学到这里,我想你大部分的网站已经不再话下了对吧?有检测报文头的,我们可以伪造报文头为浏览器,有检测IP,我们可以用代理IP,有检测请求速度的,我们可以用time模块停顿一下,需要登录验证的,我们可以用cookielib模块搞定登录,HTML标签嵌套太多层的,我们可以用BeautifulSoup轻松取出来,等等方法,反正反爬虫机制怎么样,我们基本都有方法解决。

很厉害对吧?别得意忘形了,还有些反爬虫机制,网页是JS动态加载的,或者AJAX异步加载的,还有动态验证码验证的等等的,这些机制造成的难度那才是真正的难度。后期也会跟着解析

其实你有没有发现,在我们写爬虫的过程中,在潜移默化的复习前面的基础知识,很不错对吧?既能写爬虫,还能复习,在其中能掌握好多好多知识,是的。不过在这里,我还是建议大家稍微的了解一下html标签和css样式,或者你还可以学习一下js,这样对后期搞爬虫很有帮助,需要去了解每个标签或者代码是什么含义,什么作用,当写爬虫时遇到了,才能立马做出解决方法对吧?

好的,有没有朋友想过,既然爬虫这么厉害,可以伪造浏览器,那么可以用真实的浏览器操作吗?那是当然可以的,python,就是这么灵活,那么怎么控制真实的浏览器呢?终于说道本篇文章的主角了——webbrowser模块

webbrowser模块

1.简介

顾名思义,web不用说是什么意思了吧?browser就是浏览器的意思嘛,那么webbrower就是web浏览器嘛。通俗简短的说,它可以打开本地计算机的浏览器,然后进行更一步的操作,怎么操作就随你了

webbrowser是一个内置的模块,python2和python3都有的

2.方法/属性

python2下:

python3下:

稍稍的有一些不同,不过不影响,那些我们基本很少用

3.常用方法/属性解析

webbrowser.open(url[, new=0[, autoraise=1]]):用本机默认的浏览器操作

  • url:网页链接/地址
  • new = 0, 那么url会在同一个浏览器窗口下打开;如果new = 1, 会打开一个新的窗口,如果new = 2, 会打开一个新的浏览器标签页;
  • autoraise = true,窗口会自动增长

例:

首先,我本机默认的浏览器是火狐浏览器

import webbrowser
webbrowser.open('www.baidu.com') #这里可以不用加http://了,这直接是在浏览器上操作了,会自动识别

结果:

使用new参数后,其实没多大区别,效果一样的,自己测试了

webbrowser.open_new(url):在默认浏览器中打开一个新的窗口来打开url

其效果等价于webbrowser.open(url,new=1),自己测试了

webbrowser.open_new_tab(url):在默认浏览器中当开一个新的tab来打开url

其效果等价于webbrowser.open(url,new=2),略过

webbrowser.get([name]):根据name返回一个浏览器对象,如果name为空,则获取到系统默认浏览器的操作对象
webbrowser.register(name, construtor[, instance]):注册一个名字为name的浏览器,如果这个浏览器类型允许被注册就可以用get()方法来获取

允许被注册的浏览器类型有:

'mozilla' Mozilla('mozilla')   
'firefox' Mozilla('mozilla')   
'netscape' Mozilla('netscape')   
'galeon' Galeon('galeon')   
'epiphany' Galeon('epiphany')   
'skipstone' BackgroundBrowser('skipstone')   
'kfmclient' Konqueror() (1)
'konqueror' Konqueror() (1)
'kfm' Konqueror() (1)
'mosaic' BackgroundBrowser('mosaic')   
'opera' Opera()   
'grail' Grail()   
'links' GenericBrowser('links')   
'elinks' Elinks('elinks')   
'lynx' GenericBrowser('lynx')   
'w3m' GenericBrowser('w3m')   
'windows-default' WindowsDefault (2)
'macosx' MacOSX('default') (3)
'safari' MacOSX('safari') (3)
'google-chrome' Chrome('google-chrome')   
'chrome' Chrome('chrome')   
'chromium' Chromium('chromium')   
'chromium-browser' Chromium('chromium-browser')

其中,以上的Chrome,Chromium,MacOSX等等的都是webbrowser里的属性或者方法

例:

import webbrowser
print(webbrowser.get())
webbrowser.register('chrome',None,webbrowser.Chrome('chrome'))
print(webbrowser.get('chrome'))

结果:

启动指定浏览器

我们已经知道webbrowser模块会启动本机默认浏览器,那么我们想启动指定的浏览器呢?

也是可以的:

import webbrowser
browser_path = r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe' #你的浏览器主程序路径
webbrowser.register('chrome',None,webbrowser.BackgroundBrowser(browser_path)) #此处的'chrome'可以用其它任意名字,如test,但是必须给一个,不然又会是默认浏览器执行
webbrowser.get('chrome').open('www.baidu.com',new=1,autoraise=True)

结果:

关闭浏览器

有打开自然有关闭对吧,关闭命令:taskkill /F /IM XX.exe(XX为主程序名)

这次我打开ie浏览器:

import webbrowser,os,time
browser_path = r'C:\Program Files\Internet Explorer\iexplore.exe' #你的浏览器主程序路径,linux,mac等操作环境也一样
webbrowser.register('chrome',None,webbrowser.BackgroundBrowser(browser_path))
webbrowser.get('chrome').open('www.baidu.com',new=1,autoraise=True)
time.sleep(3)
os.system('taskkill /F /IM iexplore.exe') #这里的'ieexplore.exe'是进程名称,必须和浏览器主程序名一致,不然无法关闭,taskkill是windows下的命令,linux下没记错是kill

在三秒过后确实自动关闭,由于效果不好展示,你们在本机体验吧

webbrowser可以打开其他程序吗?

这里有朋友有个想法了,你说,既然打开的是一个主程序,我可以打开QQ吗?甚至可以打开其他任何的exe程序吗?好像可行啊,注意一个命令:webbrowser.open(),这个命令打开的必须是一个合法的url,不然报错,所以,当然是不可以打开其他程序,能传入一个url的是不是只有浏览器啊?

实战,刷博客访问量

首先,我个人是不喜欢刷访问量的,刷来有什么用,自己骗自己嘛对吧?这里做个案例讲解一下,我建议大家还是不要去刷博客访问量,没什么意思,又不能体现自己的价值,也换不了钱对吧?

import webbrowser,time,os
count = 1
browser_path = r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe' #由于我用默认的浏览器火狐正在编辑本篇文章呢,所以使用的指定打开浏览器方法,你们可以直接默认的,减少代码
while count <= 9:  #最多打开九个窗口,超过就杀死进程webbrowser.register('chrome',None,webbrowser.BackgroundBrowser(browser_path))webbrowser.get('chrome').open_new_tab('http://www.cnblogs.com/yangva/p/7811622.html')count += 1time.sleep(2)
else:os.system('taskkill /F /IM chrome.exe')

结果:这里我设置只有注册用户才能查看,所以提示需要登录的,不影响,结果是实现了的

转载于:https://www.cnblogs.com/yangva/p/7811655.html

洗礼灵魂,修炼python(68)--爬虫篇—番外篇之webbrowser模块相关推荐

  1. 特征值篇(番外篇)——矩阵特征值几何重数和代数重数

    文章目录 特征值的代数重数定义 特征值的几何重数定义 semisimple eigenvalue 和 spectrum 定义 定理 特征值的代数重数定义 摘自 Linear Algebra and i ...

  2. 浅析android手游lua脚本的加密与解密(番外篇之反编译的对抗)

    前言   去年在看雪论坛写了一篇<浅析android手游lua脚本的加密与解密>的精华文章,今年写一篇番外篇,将一些lua反编译对抗的内容整合一起,并以3个实例作为说明(包括2018腾讯游 ...

  3. Python番外篇:网络爬虫组词程序

    今天,双是番外篇,这次番外篇主要教大家如何用网络爬虫查询词语. 1.确定数据源 首先,我们得找一个查询的数据源,我找到了360国学网站,选择"词语大全",它的查询词语网址为: ht ...

  4. python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...

    整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇 一.进程 程序并不能单 ...

  5. python的类和对象——类的静态字段番外篇

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

  6. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...

  7. python实验总结与反思_警示与反思丨什么是Python网络爬虫?看这篇清晰多了!

    原标题:警示与反思丨什么是Python网络爬虫?看这篇清晰多了! 什么是爬虫? 网络爬虫(Web crawler),就是通过网址获得网络中的数据.然后根据目标解析数据.存储目标信息.这个过程可以自动化 ...

  8. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

  9. 通过游戏编程学Python(番外篇)— 单词小测验

    通过游戏编程学Python 通过游戏编程学Python(6)- 英汉词典.背单词 通过游戏编程学Python(番外篇)- 乱序成语.猜单词 通过游戏编程学Python(5)- 猜成语(下) 通过游戏编 ...

最新文章

  1. 图文结合!一文搞懂 Redis 常用知识点!
  2. AC日记——字符替换 openjudge 1.7 08
  3. css 大于号 标签_web前端教程之怎样学好css?
  4. java对象内存模型_Java对象的内存模型
  5. Win32API不规则窗口制作
  6. 测试一下Windows Live Writer能否正常使用。
  7. 罗永浩直播又翻车?网友吐槽半价车是黑幕,本人回应
  8. __super作用(C++中)
  9. 最爱的城市(dfs)
  10. Python学习笔记010——匿名函数lambda
  11. 前端实现在线预览pdf、word、xls、ppt等文件
  12. android课设会议室预约系统,教室及会议室预约系统(C#小程序,课堂作业)
  13. java 线程通讯道通信就_java线程间通讯的一些方法总结
  14. 小程序uni-app介绍
  15. 关于剪枝对象的分类(weights剪枝、神经元剪枝、filters剪枝、layers剪枝、channel剪枝、对channel分组剪枝、Stripe剪枝)
  16. CPT,CPM,CPS
  17. 企业服务总线架构介绍
  18. 关闭电脑弹窗广告的几种方法
  19. 出错记录:Error: package or namespace load failed for ‘DESeq2’:没有这个DLL ‘BiocParallel’:是不是没有为此架构安装?
  20. 简单的从中国植物志爬去植物拉丁文名的代码(PHP)

热门文章

  1. 如何写Java文档注释(Java Doc Comments)
  2. 快速失败Vs安全失败(Java迭代器附示例)
  3. 如何与人交流——程序员,赶紧生个孩子吧!
  4. 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設
  5. 浏览器左上角的网站图标
  6. JSP标签和JSTL标签注意点
  7. 各路资本暗战智能家居
  8. Fedora中允许mysql远程访问的几种方式
  9. 基于TFS实践敏捷-可视化管理
  10. 流量暴涨擒凶记(转)