Python库之玩转Selenium

2019-07-26 14:39:19 浏览数 (1)

哈哈,帅哥出场怎么没有一点掌声呢,小姐姐小哥哥噪起来,let's cheer up,打起精神开始学习咯~本周我们要分享的是什么呢?来说说网站的浏览量吧,毕竟咱们做网站,写博客,肯定是希望越来越多的人能看到你自己写的东西啊,这样就可以狠狠的在面试官面前装个逼了,我可是访问量上百万的博主啊,?,那么如何使你的网站访问量噌噌的往上涨呢?除了你本身博客的质量和你强大的粉丝团以外,小编在教你一个黑科技,用Python来刷浏览量.

在这一部分,我会分五部分来说:

  • 网站流量的计算及区别介绍
  • 如何刷网站流量(扯一点seo的知识)
  • 应用的安装(所有软件安装地址请大家在我的博客查看,自行百度搜索"石璞东"进行查看)

a. Python

b.webdriver的安装

c.selenium的安装

  • 举个例子
  • 思路提供

ok,话不多说,干起来吧~

一、网站流量的计算及区别介绍

  • 浏览量(page view): 用户每次打开一个网站页面就被记录一次.用户多次打开同一页面,浏览量累计.
  • 访客数(user view): 一天之内网站的独立访客数(以cookie为依据),一天之内同一访客多次访问同一网站只计算为1个访客.
  • 访问次数: 记录所有访客1天内访问了多少次我的网站,相同的访客有可能多次访问我的网站.
  • IP数: 一天之内访问网站的独立IP
  • 新访客数: 一天的独立访客中,历史第一次访问网站的访客数.
  • 新访客比率: 新访客数/访客数
  • 跳出率: 只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比
  • 平均访问时长: 访客在一次访问中,平均打开网站的时长.即每次访问中,从打开第一个页面到关闭最后一个页面的平均时间.
  • 转化次数: 访客到达转化目标页面的次数

ok,提一个问题,假设中国的34个省份(我就不区分省、直辖市、特别行政区这些了,这里只简单借此作为一个例子)每个省均只有一个接入互联网的网关,即只能通过该网关访问互联网资源,也就是说只有一个公网ip,我的问题是:假设这34个省每个省的所有用户每天都访问一次我的网站,试问24个小时之后,我网站的浏览量是所有用户的个数还是34,what about 独立ip?

答: 拿起你的小本本,开始做笔记了哟~这里涉及一些计算机网络的知识.为了照顾小姐姐我尽量说的通俗一点~首先给出答案,网站的访问量是所有访问用户的总个数,独立IP是34.解释一波:

  • 网站浏览量计算的是用户打开网站页面的次数,换句话说跟你的IP没有关系,就算你使用一个固定IP访问我的网站它的浏览量也会上去的
  • 每个省分配一个公网IP,独立IP数为34, 在每个省的"局域网"环境下,又有很多的局域网IP,之所以这样分配是为了解决IPV4地址不够用的问题,这些"局域网IP"去访问互联网资源必须通过网关,即对外显示是通过该省的公网IP访问的,也就是说通过34个独立的IP实现了全国人的访问(【注】: 这里的"局域网"并不是我们一般情况下的局域网,小可爱们不要混淆哟;每个省分配一个独立公网IP,这只是我为了说明这个问题而假想的一种理想情况,大家不要当真哟~理解问题最重要~)

二、如何刷网站流量(扯一点SEO的知识)

大家可以参考的我的另一篇技术分享(http://www.shipudong.com/2019/04/05/yi-dong-zhi-fu-na-xie-shi/)去了解更多关于搜索引擎的知识.

先给大家看下几个主流网站对我的排名情况:

  • Google
  • 百度
  • 搜狗
  • 360

从这个关键词搜索的词条排名情况和词条数目也能反映出这个搜索引擎的某些优缺点(当然有我自身技术的原因),单从爬虫速度来说: Google>搜狗>百度>360,搜狗应该算是爬虫速度频率比较高的了,百度对于我的网站的收录还有一些死链,360就不用说了,词条数和死链都是最少的,Google还收录了我网站的照片呢,而国内的三个均没有收录.细节见差异啊~

SEO属于网络营销人员的工作,这里我稍微点到为止,就不在专业的小可爱们面前装逼了.咱们做一个个人网站,为的就是让跟多的人能通过这个平台了解到自己的技术、甚至了解到自己,毫无疑问网站浏览量是一个相对权威的数据,虽然有的人可能说通过刷流量软件或者百度竞价(俗称"花钱买热搜")可以很快的提高,不过,我想说的是:既然认真做了网站,就别搞这些虚的,技术是真.

网站流量的提高:

  • 可以通过访问网站的用户数,就是那些认认真真关注你博客学习技术的小可爱们
  • 还有就是通过搜索引擎的爬虫程序从而提高你网站页面的权重,从而让你的网站通过关键词搜索之后能够在同类网站中排在靠前的位置,从而间接提高你的访问量,
  • 通过站长工具去做SEO(SEO的过程是比较漫长滴,涉及到网站页面的代码格式、关键词、网站的运行时间、外链内链等等,具体的还是请大家去参考我在该部分给大家分享的博文(http://www.shipudong.com/2019/04/05/yi-dong-zhi-fu-na-xie-shi/),里面有详细的讲解哟)

三、应用的安装

  • Python和webdriver的安装我在文章开始已经给了大家下载地址,大家自己安装吧~

安装完之后通过:

代码语言:javascript复制
Python -V

在cmd里查看版本号,若显示如下,则代表安装成功,哎哟,你真棒~

  • 然后就是下载webdriver,根据你电脑上Chrome的版本去下载相对应的那个驱动(大家可以通过这篇博客(https://blog.csdn.net/u013783095/article/details/79851194)来对照自己的Chrome和webdriver版本),然后理论上放在任意一个路径下都行,我是放在Chrome的文件下了:
  • 最后就是selenium的安装了

借用pip工具:

代码语言:javascript复制
pip install selenium

ok,准备工作差不多就可以了,IDE这些大家自行解决(推荐:Pycharm)

四、 举个例子

大家自行搜索selenium的官方文档,同时也可以结合着我的例子进行学习

1. 自动打开"石璞东"网站页面

代码语言:javascript复制
from selenium import webdriver
browser=webdriver.Chrome('C:Program Files(x86)GoogleChromeApplicationchromedriver.exe')
browser.get("http://www.shipudong.com")

【注】:可以通过配置环境变量直接使用webdriver.Chrome()来模拟一个浏览器,也可以通过webdriver.Chrome('C:Program Files(x86)GoogleChromeApplicationchromedriver.exe')直接来进行模拟.

2. 自动打开"百度"页面并输入关键词"石璞东"进行搜索

代码语言:javascript复制
from selenium import webdriver
browser = webdriver.Chrome('C:Program Files (x86)GoogleChromeApplicationchromedriver.exe')
browser.get("http://www.baidu.com")
browser.find_element_by_id('kw').send_keys("石璞东")
browser.find_element_by_id('su').click()

看下搜索框和提交按钮对应的HTML元素:

  • 提交按钮
  • 搜索框

【注】: 通过selenium提供的API找到搜索框和提交按钮,然后通过selenium来模拟填写关键词和点击提交按钮两种行为.

【再注】: 给大家看一可能是个百度非官方Python脚本(http://baidu.physton.com/?q=石璞东)的例子,有没有觉得这和我的这个例子有点异曲同工的味道呢,有就对了~哈哈

3. 网站浏览量的刷新

我在第一部分已经说过了,这里再重述一遍:

  • 网站的浏览量对于一个网站来说是一个很重要的评价标准
  • 网站浏览量可以通过竞价、刷流量等多种方式实现

我在这里通过这个例子是为了向大家介绍selenium的使用,对于浏览量希望大家还是通过实力去获得?来,说说思路,既然一个网站的浏览量通过多次的点击或者多次的刷新就可以提高,它跟ip地址没有一毛钱关系,那么我就可以写一个Python脚本让脚本来帮我执行,两个思路:

  • 间隔5s打开一次浏览器访问指定的网站,间隔5s关闭网站,如此往复执行
代码语言:javascript复制
from selenium import webdriver
import time
def controlBrowser():
    driver = webdriver.Chrome('C:Program Files (x86)GoogleChromeApplicationchromedriver.exe')
    driver.maximize_window()
    time.sleep(5)
    print("5秒后我就要访问石璞东的网站咯")
    driver.get("http://www.shipudong.com")
    time.sleep(5)
    print("5秒后我就要关闭浏览器咯")
    print("============================");
    driver.close()
if __name__=="__main__":
    while 1:
        controlBrowser()
  • 间隔一段时间点击一次刷新按钮,就这样循环往复
代码语言:javascript复制
from selenium import webdriver
import time
def controlBrowser():
    driver = webdriver.Chrome('C:Program Files (x86)GoogleChromeApplicationchromedriver.exe')
    driver.get("http://www.shipudong.com")
    time.sleep(5)
    driver.refresh()

if __name__=="__main__":
    while 1:
        controlBrowser()

为什么要间隔一段时间呢,这个问题很好,因为访问一个网站的实质就是:客户端发送请求,服务器端按照要求返回该网站的所有内容,也就是需要通过来网络传输数据,因为网络传输过程中的各种时延是不能确定的,所以这里留了一个时间间隔.

浏览量确实提升了呢~

五、思路提供

还有两个例子,这里小编就不写代码了(大家放心,我文章中所有涉及到的例子在明年我考完研之后我都会把代码贴出来的),说下思路就行,哪个小可爱想写或者有兴趣,私聊我:

  • 某智慧树还有某尔雅这些在线的网络公选课,想必大家都知道吧,百度上一搜刷课软件全都是被封的消息,哈哈,我给大家理理思路:如何用selenium来实现呢?

答: 在web端观看网络公选课视频,大概在视频时长一半的某个时间点内,会出现答题页面,这个时候视频进度会终止,所以对于一些开着电脑刷课的同学很是苦恼,得不停的去点击,这时候如果你懂Python的话,分分钟让你解决烦恼.简单来说,就是模拟一个点击事件:当页面弹出答题页面的时候通过selenium模拟点击操作,随便在ABCD选项中点击一个并点击"关闭按钮",很简单吧,那你就错了,问题是你如何知道具体什么时候出现大体页面呢?这里给两个思路:

a.正面硬刚(获取视频的所有帧,通过图像识别算法进行相似度的分析)是不是有点太难了呢?

b. 换个思路(那硬刚不行,我就换个思路),已知基本上在视频时长的一半处会弹出答题页面,那我就设置一个定时(定时时间略大于视频长度的一半),然后通过selenium模拟浏览器的点击操作

  • web端的投票大家都知道吧,这很好搞的,想一个问题:为什么不允许用户无限次数的点击呢,屁话,当然是为了公平啊,哈哈,装个逼,咱们从技术上说说"如何办到这一点的"每点击有限次,客户端就会通过记录cookie的方式,来阻止你无限次的恶意点击,那对于我们这样闷骚的技术人,这能阻止我们的脚步吗,大声说:不能,很好,客户端敢记录我的cookie,那我就点击一次清理一次cookie,你来咬我呀,是不是就搞了呢.?

写一下伪代码:

代码语言:javascript复制
from selenium import webdriver
browser = webdriver.Chrome("webdriver的存放路径")
browser.get("投票链接地址")
browser.delete_all_cookies()#清理cookie
browser.find_element_by_id("投票按钮的id").click()
browser.close()#做完之后别忘了关掉浏览器装作啥也没发生过?

哈哈,本周的分享就结束了,希望大家把刷课、投票这些当作一个例子去更好的理解selenium更好的使用它,而不是通过它做什么流氓软件破坏市场对吧,做一个懂规矩的软件人~

0 人点赞