Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 795|回复: 2

[模块] 通过selenium实时获取斗鱼主播热度数据

[复制链接]

11

主题

22

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2018-9-8 17:19:33 | 显示全部楼层 |阅读模式
通过这个例子,学习使用chrome的开发者工具定位页面元素的位置,并通过selenium调用浏览器,对网页数据进行抓取。
随意打开一个主播的页面,我们想要抓取的热度信息如下:


34949+7177,热度由两部分相加得到,后一部分貌似是近期的活动加成。
在Chrome中,点击右键选择“检查”,将会打开开发者工具


点击图中最左边的单箭头的方框,可以选择页面对应的元素
Python很容易学!所以小编有弄一个交流,互问互答,资源共享的交流学习基地,如果你也是Python的学习者或者大牛都欢迎你来!㪊:548+377+875!一起 学习共同进步!


这部分对应的源代码


其中 class="summer_hot_value" 是比较重要的信息,我们做爬虫时,可以通过class name来定位该元素。
程序完整代码如下:
[Python] 纯文本查看 复制代码
from selenium import webdriver
import time
options = webdriver.ChromeOptions()
prefs = {
 'profile.managed_default_content_settings.images': 1,
 'profile.content_settings.plugin_whitelist.adobe-flash-player': 1,
 'profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-player': 1,
}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome('/Users/xiewf/Desktop/PythonProjects/spider/chromedriver', chrome_options=options)
url = "https://www.douyu.com/3866447"
driver.set_window_size(1200, 900)
driver.get(url)
print('开始等待网页刷新')
time.sleep(5)
while 1:
 try:
 hot_value = driver.find_element_by_class_name('summer_hot_value').text
 print(hot_value)
 time.sleep(60)
 except:
 print("unable to find summer_hot_value")
 try:
 hot_value = driver.find_element_by_class_name('hot-v').text
 print(hot_value)
 except:
 print("unable to find hot-v")
 fileObject = open('douyu_hot_v.html', 'w')
 fileObject.write(driver.page_source)
 fileObject.close()
 break
# driver.close()
print("程序运行结束")
简单讲解一下:
driver.find_element_by_class_name('summer_hot_value')找出class name为summer_hot_value的元素,通过text方法可以获得对应的字符串,即:
34949+7177,将这个信息打印出来,然后每隔60秒获取一次热度信息并打印。
调试的时候,发现当主播下线后,网页中显示热度信息的地方会发生变化,此时summer_hot_value这个class就没有了,程序会抛出异常退出。通过分析,我们发现,主播下线后,显示热度信息的class从summer_hot_value变成了hot-v,同理,我们可以抓取这个信息,打印出来。
程序运行结果如下:


每隔一分钟获取一次热度信息,总共获得403条数据
像一株盆栽、盆栽、盆栽,淡定而高雅~~~



Python 总 群
回复

使用道具 举报

8

主题

13

帖子

36

积分

新手上路

Rank: 1

积分
36
发表于 2018-9-10 08:15:13 | 显示全部楼层
厉害了我的哥!
Python 总 群
回复

使用道具 举报

11

主题

22

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-9-14 20:18:10 | 显示全部楼层

谢谢你的夸奖,我会继续努力的!
Python 总 群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-2-27 10:35 , Processed in 0.221038 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表