斗鱼直播的所有房间

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/g_optimistic/article/details/89944897

目录

1.导入模块

2.网络请求

3.提取数据

(1)房间名称

(2)房间标签

(3)主播

(4)关注数


斗鱼直播:https://www.douyu.com/directory/all

进入这个网址之后我们想要爬取在线直播的所有直播房间


1.导入模块

import requests
from lxml import etree

2.网络请求

url = 'https://www.douyu.com/directory/all'
# 模仿浏览器访问
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}
content = requests.get(url=url, headers=headers).content.decode('utf-8')
with open('templates\\douyu.html', 'w', encoding='utf-8') as fp:
    fp.write(content)

3.提取数据

首先分析一下前端页面的结构,看看我们要的数据在哪

有一个注意的问题,我们在浏览器上看到的结构可能和我们保存下来的content有所不同,所以在浏览器找到我们要的东西之后,去保存的content里面再去确认一下。

每一房间的位置:ul>li

(1)房间名称

(2)房间标签

(3)主播

(4)关注数

代码实现:

tree = etree.HTML(content)
li_list = tree.xpath('//ul[@class="layout-Cover-list"]/li')
print(len(li_list))
i = 0
for li in li_list:
    i += 1
    print('===================第%s个房间======================' % i)
    # 提取房间名称
    room_name = li.xpath('.//h3[@class="DyListCover-intro"]/text()')
    print("房间名称", room_name[0])
    room_tag = li.xpath('.//span[@class="DyListCover-zone"]/text()')
    print("房间标签:", room_tag[0])
    room_player = li.xpath('.//h2[@class="DyListCover-user is-template"]/text()')
    print("主播:", room_player[0])
    room_follows = li.xpath('.//span[@class="DyListCover-hot is-template"]/text()')
    print("关注数:", room_follows[0])

# 使用requests请求,不能实现分页,选择无界面请求

后面我们再讲分页策略

猜你喜欢

转载自blog.csdn.net/g_optimistic/article/details/89944897
今日推荐