海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)

 2023-10-12  阅读 465  评论 0

摘要:如果你看了《Python爬虫之爬虫神器selenium!还不会用它你就out了》那么你应该知道 selenium 是什么了它能做到自动操作比如我们上次说的自动百度苍老师但有时候我们不想要让它打开浏览器去执行能不能直接在代码里面运行呢也就是说有没有一个无形的浏览器呢恩phantomJS 就是它是一个基

如果你看了

《Python爬虫之爬虫神器selenium!还不会用它你就out了》

那么你应该知道 selenium 是什么了

它能做到自动操作

比如我们上次说的自动百度苍老师

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(1)

但有时候

我们不想要让它打开浏览器去执行

能不能直接在代码里面运行呢

也就是说

有没有一个无形的浏览器呢

phantomJS 就是

它是一个基于 WebKit 的浏览器引擎

可以做到无声无息的操作各种动态网站

比如 js,css选择器,dom操作的

所以对于市面上大多通过 js 渲染的动态网站

难以解析的网站

想要爬取的话

就会使用到

selenium phantomjs

那么怎么玩呢

这次

小编就带领你

使用它们来爬取X站上的 蔡徐坤和他的球友

接下来就是

学习 python 的正确姿势

如果你还不知道蔡徐坤是谁

那么在这里给你介绍几点

你将会体会到人家有多么牛逼

首先比吴京帅

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(2)

其次是他的微博动不动就被转发上亿次,还被央视点名表扬

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(3)

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(4)

唱得了歌

还跳得了舞

打得了篮球,当过 NBA 形象大使

除此之外

还有诸多优点

在这里就不说了

相信你已经和我一样

已经被他的优秀所折服了

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(5)

(蔡徐坤本蔡)

正因为如此优秀

所以X站上很多 up 主向他学习打篮球

那么话不多说

开始爬取X站上的 蔡徐坤和他的球友

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(6)

首先来分析一下X站

打开

https://www.xxx.com/(头条不能发B站网址,你们自行进入哈)

可以看到有一个搜索按钮

我们就输入「蔡徐坤 篮球」

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(7)

按一下搜索

跳出来另一个窗口

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(8)

在这个页面可以看到

我们需要的数据有

  • 名称
  • 视频地址
  • 描述
  • 观看次数
  • 弹幕数量
  • 发布时间

待会我们就把这些数据都爬下来

分析完之后

就开始撸代码了

首先我们要拿到浏览器的对象

browser = webdriver.Chrome()

接着开始访问X站

browser.get("https://www.xxx.com/") #(头条不能发B站网址,你们自行脑补哈)

获取到X站首页的输入框和搜索按钮

input = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#banner_link > div > div > form > input"))) submit = WAIT.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="banner_link"]/div/div/form/button')))

在这里的

WAIT.until(EC.presence_of_element_located...

就是等到这个元素可操作的时候才会继续执行下一步

获取到输入框元素后输入「蔡徐坤 篮球」

接着点击搜索

input.send_keys('蔡徐坤 篮球') submit.click()

然而

不妙的事情发生了

X站弹出了一个登录框

正好挡住了我们要操作的搜索

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(9)

那么就在搜索之前

点击一下首页刷新一下再输入吧

# 被那个破登录遮住了 index = WAIT.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#primary_menu > ul > li.home > a"))) index.click()

这样登录框就不会出来了

(当然,你在这里也可以使用模拟登录,但这个,我们往后说)

ok..

浏览器自动点击搜索之后

这个时候会弹出一个新的窗口

这个窗口里的内容

就是我们要的搜索结果

所以我们要让我们当前的浏览器对象获取到当前的窗口

接着获取到第一页的所有数据

# 跳转到新的窗口 print('跳转到新窗口') all_h = browser.window_handles browser.switch_to.window(all_h[1]) get_source()

我们还要获取总页数

因为每一页的内容

我们都是要抓取的

total = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#server-search-app > div.contain > div.body-contain > div > div.page-wrap > div > ul > li.page-item.last > button"))) return int(total.text)

获取到总页数之后

我们就开始循环

for i in range(2,int(total 1)): next_page(i)

如何获取下一页呢

当然是模拟点击「下一页按钮」的操作

我们获取「下一页按钮」的元素

然后点击

点击之后判断一下是否在我们当前的页数

然后获取数据

print('获取下一页数据') next_btn = WAIT.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#server-search-app > div.contain > div.body-contain > div > div.page-wrap > div > ul > li.page-item.next > button'))) next_btn.click() WAIT.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#server-search-app > div.contain > div.body-contain > div > div.page-wrap > div > ul > li.page-item.active > button'),str(page_num))) get_source()

有时候可能网速卡

在刷到某一页的时候数据加载不出来

可以来个异常捕获

刷新一下

再递归一下嘿嘿

except TimeoutException: browser.refresh() return next_page(page_num)


获取资源很简单

我们已经用 selenium 跳转到我们要的页面了

那么就拿下当前页面的源码

然后用

《Python分布式爬虫之BeautifulSoup处理正则表达式》

来解析一下

最后把数据放到 excel 中

WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#server-search-app > div.contain > div.body-contain > div > div.result-wrap.clearfix'))) html = browser.page_source soup = BeautifulSoup(html,'lxml') save_to_excel(soup)

解析爬取

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(10)

最后别忘了关闭浏览器哦

finally: browser.close()

来运行一下项目吧

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(11)

数据到手

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(12)

哦~ 对了

不是说还有一个叫做 phantomjs 的么?

简单简单

接下来我们就利用它来打造一个无痕的浏览器

首先我们要下载phantomjs

你可以到官网去下载

下载完之后你需要配置一下环境变量哦

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(13)

接着回到我们的代码

将 Chrome 换成 phantomjs

browser = webdriver.PhantomJS()

这次我们再来运行项目

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(14)

这次就是真正的不会打开任何有界面的浏览器了

看下我们抓到的数据

海龟画图python代码画蔡徐坤(Python爬虫爬取B站蔡徐坤打篮球)(15)


老规矩,关注后发私信“蔡徐坤”即可获得爬虫源码。

重要的事情说三遍!

关注后发私信“蔡徐坤”即可获得爬虫源码。

关注后发私信“蔡徐坤”即可获得爬虫源码。

关注后发私信“蔡徐坤”即可获得爬虫源码。

,

版权声明:xxxxxxxxx;

原文链接:http://cn.tdroid.net/ce34eCz0HAQkAUA.html

发表评论:

管理员

  • 内容265568
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:
注册登录
注册帐号
登录帐号

Copyright © 2022 太卓开发网 Inc. 保留所有权利。 泰达科技网易库网

页面耗时0.1500秒, 内存占用1.36 MB, 访问数据库18次