zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼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:UsersAdministratorAppDataLocalGoogleChromeApplicationchrome.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 FilesInternet Exploreriexplore.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:UsersAdministratorAppDataLocalGoogleChromeApplicationchrome.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')
    

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

  • 相关阅读:
    hdu_5791_Two(DP)
    hdu_5783_Divide the Sequence(贪心)
    hdu_5769_Substring(后缀数组)
    hdu_5778_abs(暴力)
    hdu_5776_sum(前缀和维护)
    hdu_5777_domino(贪心)
    [wikioi2069]油画(贪心)
    [bzoj 1503][NOI 2004]郁闷的出纳员(平衡树)
    数据结构练习
    [poj3274]排排站(Hash)
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7811655.html
Copyright © 2011-2022 走看看