虎牙直播爬虫项目:
#导入selenium相关的工具
from selenium import webdriver
from lxml import etree
class Huya(object):
#初始化
def __init__ (self):
#通过浏览器加载网页
self.driver = webdriver.PhantomJS()
#要统计的数据
self.room_count = 0 #房间数量
self.audience_count = 0 #房间观众数量
#执行爬虫
def run(self):
#打开网页
self.driver.get('https://www.huya.com/l')
#爬取相关的数据
content = etree.HTML(self.driver.page_source) #获取并解析网页的源码
#获取房间信息
rooms = content.xpath('.//ul[@id="js-live-list"]/li')
for room in rooms:
#获取房间名称
roomname = ''
tmp = room.xpath('./a[contains(@class,"title")]/text()')
if len(tmp) > 0:
roomname = tmp[0]
#获取房间人气
audience = ''
tmp = room.xpath('//span[@class="num"]/i[@class="js-num"]/text()')
if len(tmp) > 0:
audience = tmp[0]
print('房间观众:%s,房间名称: %s' % (audience, roomname))
#增加房间数
self.room_count += 1
#增加观众数
if audience[-1] == '万':
audience = audience[0:-1] #2.2万 -- 2.2
audience = int(float(audience) * 10000)
self.audience_count += audience
else:
self.audience_count += int(audience)
#输出结果
print('当前直播间数量: %d' % self.room_count)
print('当前观众数量: %d' % self.audience_count)
def test(self):
#打开网页
self.driver.get('https://www.huya.com/l')
#循环遍历每一页
page = 0
while True:
import time
time.sleep(2)
page += 1
#查找class
ret = self.driver.page_source.find('laypage_next')
if ret > 0:
print('第%d页' % page)
else:
print('最后一页')
break
#点击下一页按钮
self.driver.find_element_by_class_name('laypage_next').click()
if __name__ == '__main__':
huya = Huya()
huya.run()
#huya.test()
运行结果:(截取部分)
房间观众:19.7万,房间名称: 湖北声优第一仙女中单
房间观众:48.2万,房间名称: v:带粉无敌~!
房间观众:48.1万,房间名称: G神~世界第一狙
房间观众:38.2万,房间名称: 今晚8:00才艺大比拼/招优质主持
房间观众:23.6万,房间名称: 第861集,简单唱歌
房间观众:19.3万,房间名称: 单排锐雯峡谷之巅今天宗师崽
房间观众:47.9万,房间名称: 30人生化千分下单上号乱秀
房间观众:47.1万,房间名称: 宇宙级吕布单排轻松101
房间观众:37.5万,房间名称: 派活13-公爵王Y33
房间观众:22.7万,房间名称: 是你的心动女孩嘛~
房间观众:16.9万,房间名称: 南通王者妹妹 电一~ 一起玩
当前直播间数量: 120
当前观众数量: 96177000