通过selenium实时获取斗鱼主播热度数据!斗鱼一哥居然是他?
通过这个例子,学习使用chrome的开发者工具定位页面元素的位置,并通过selenium调用浏览器,对网页数据进行抓取。 随意打开一个主播的页面,我们想要抓取的热度信息如下: 34949+7177,热度由两部分相加得到,后一部分貌似是近期的活动加成。 在Chrome中,点击右键选择“检查”,将会打开开发者工具 点击图中最左边的单箭头的方框,可以选择页面对应的元素 Python很容易学!所以小编有弄一个交流,互问互答,资源共享的交流学习基地,如果你也是Python的学习者或者大牛都欢迎你来!?:548+377+875!一起 学习共同进步! 这部分对应的源代码 其中 class="summer_hot_value" 是比较重要的信息,我们做爬虫时,可以通过class name来定位该元素。 程序完整代码如下: 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 – 参数必须是9项序列,而不是datetime.datetime
- python基于itchat实现微信群消息同步机器人
- Python 创建函数并将其作为单进程的完整代码
- python – 游戏从源代码运行良好,但不是从py2app运行
- 利用Python的Twisted框架实现webshell密码扫描器的教程
- TensorFlow发布了一则劲爆消息!Python就是这么牛逼!不信?
- 通过python的多处理模块显然是时间旅行:当然我做错了什么
- python – 为什么我不能在1.5.0之后调用matplotlib.animati
- Django迁移是否应该在源代码控制中生效?
- 使用python3在列表生成器表达式中未定义全局,与python2一起