洗礼灵魂,修炼python(68)--爬虫篇—番外篇之webbrowser模块
题外话:
爬虫学到这里,我想你大部分的网站已经不再话下了对吧?有检测报文头的,我们可以伪造报文头为浏览器,有检测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 += 1 time.sleep(2) else: os.system('taskkill /F /IM chrome.exe')
结果:这里我设置只有注册用户才能查看,所以提示需要登录的,不影响,结果是实现了的
洗礼灵魂,修炼python(68)--爬虫篇—番外篇之webbrowser模块的更多相关文章
- 洗礼灵魂,修炼python(69)--爬虫篇—番外篇之feedparser模块
feedparser模块 1.简介 feedparser是一个Python的Feed解析库,可以处理RSS ,CDF,Atom .使用它我们可从任何 RSS 或 Atom 订阅源得到标题.链接和文章的 ...
- Python之路【番外篇】回顾&类的静态字段
回顾 回顾:字符串.列表.字典的修改关于内存的情况 一.字符串 str1 = 'luotianshuai' str2 = str1 print id(str1) print id(str2) prin ...
- python之爬虫--番外篇(一)进程,线程的初步了解
整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇 一.进程 程序并不能单 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- python的类和对象——番外篇(类的静态字段)
什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...
- python自动化测试应用-番外篇--接口测试1
篇1 book-python-auto-test-番外篇--接口测试1 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),至今<安卓a ...
- python自动化测试应用-番外篇--接口测试2
篇2 book-python-auto-test-番外篇--接口测试2 --lamecho辣么丑 大家好! 我是lamecho(辣么丑),今天将继续上一篇python接 ...
- python的类和对象——类的静态字段番外篇
什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)
#3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...
随机推荐
- jvm详情——3、JVM基本垃圾回收算法回收策略
JVM基本垃圾回收算法回收策略 引用计数(Reference Counting):比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的 ...
- win32程序之窗口程序,以及消息机制
win32程序值窗口程序,以及消息机制 一丶简介 通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标 ...
- 开始翻译Disruptor
刚开始接触Disruptor,看了作者的博客,发现这个大牛很与众不同,他不仅讲解自己的框架的设计思想,还深度介绍了这样设计的原因,其知识范围涵盖了操作系统.数据结构.计算机组成,很有学习的价值.网上有 ...
- SHELL脚本--多命令逻辑执行顺序
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中可以使用分号“;”.双and号“&& ...
- 简单说明CGI和动态请求是什么
1. CGI是什么 CGI是common gateway interface的缩写,大家都译作通用网关接口,但很不幸,我们无法见名知意. 我们知道,web服务器所处理的内容都是静态的,要想处理动态内容 ...
- python集合类型
集合类型简介 集合也是容器,其内元素都是无序.唯一.不可变的.它常用来做成员测试.移除重复数据.数据计算(比如交集.并集.差集). 集合Set是dict的无value版.集合也使用大括号包围: > ...
- MAC 地址(单播、组播、广播地址分类)
简介 一个制造商在生产制造网卡之前,必须先向 IEEE 注册,以获取到一个长度为 24bit 的厂商代码,也称为 OUI(Organizationally-Unique Identifier).制造商 ...
- SpringBoot学习(八)-->SpringBoot之过滤器、监听器
本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener. 过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet ...
- 根据传智写的SqlHelper
using System; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace ...
- C#线程同步--限量使用
问题抽象:当某一资源同一时刻允许一定数量的线程使用的时候,需要有个机制来阻塞多余的线程,直到资源再次变得可用.线程同步方案:Semaphore.SemaphoreSlim.CountdownEvent ...