selenium模块的简单使用

苦恼:诸位可爱的群友们,是不是常常有这样的烦恼,明明内容就在网站上,但是用python的requests的模块却一直爬不出来。或者返回的根本不是自己要的数据。像b站的评论,网易云的评论。抖音的评论等等。

图片

整个人狠狠的emo住了

-------鲁迅

换了各种方法,都不行。用re来匹配,返回的数据压根没有我要的数据,用Beautiful Soup还是不行。用xlml还是不行。后来打印一下requests请求后返回的文本,发现压根没有返回我要的数据。无语。。。。。。


但是,就这样结束了吗?
                                ——陀思妥耶夫斯基

万能的python是肯定不会败在这里的!不!我要爬到这些数据!!!

果不其然,python果然没有让我失望,python从他万能的库里面找到了selenium的模块给了我。我如获至宝,有了它,我就可以爬网站上看到的所有内容了(终于实现了所见即可爬)。虽然也有缺点,速度太慢了。。。

图片

那么接下来,就是来介绍这个selenium这个法宝了。

终于要开始了吗?
————。。。。

接下来,用我们的最喜爱的b站来做例子哈!获取b站视频评论

首先,我们打开b站的页面,看看是个啥样?

图片

嗯,没错,就是这个熟悉的页面,接下来随便打开一个视频页。

图片

嗯,看一下评论。

嗯,一切都很顺利!!

接下来,就不使用requests。因为使用requests直接抓的肯定是爬不出来了。除非用f12抓包抓到评论接口。但是我们的主题是什么?是使用selenium呀。所以,本小可爱就不用requests来写了。要不然我还写这篇文章干吗?

import time #导入time模块
from selenium import webdriver#从selenium导入webdriver模块,用来初始化edge
driver = webdriver.Edge('msedgedriver.exe')#这个msedgedriver.exe要自己去edge下载,selenium支持谷歌,火狐和edge还有ie,我想应该没有人用IE吧
driver.get('https://www.bilibili.com/video/BV1Ju411f7ra?spm_id_from=333.851.b_7265636f6d6d656e64.1')#打开浏览器请求网页
for i in range(1,100):#循环一百次
  i = i*10000#每次下滑一万像素
  js = "var q=document.documentElement.scrollTop={}".format(i)#js代码
  driver.execute_script(js)#执行js代码
  time.sleep(5)#缓冲一下,当然selenium也有自己的缓冲方法,我这里没有用
  text = driver.find_elements_by_class_name('text')#获取评论元素
  for i in text:#循环输出评论
      print(i.text)

结果

当然,我的代码只是写文章的时候随便写了一下,还有很多问题。诸位看看就好哈

最后,学习交流群342096685

图片

猜你喜欢

转载自blog.csdn.net/qq_59848320/article/details/120896175