必威体育Betway必威体育官网
当前位置:首页 > IT技术

爬取斗鱼直播平台的所有房间信息

时间:2019-10-09 18:14:27来源:IT技术作者:seo实验室小编阅读:65次「手机版」
 

斗鱼直播间

1.首先确定数据的位置

每个房间的数据都在id=live-list-contentbox的ul中

2.

实现翻页和控制程序结束

selenium中通过点击就可以实现翻页,观察存在下一页和不存在下一页时候标签的变化

存在下一页时:

不存在下一页时:

具体代码如下:

```

import json
import time
from selenium import webdriver


class DouYu(object):
    def __init__(self):
        self.start_url = 'https://www.douyu.com/directory/all'
        self.driver = webdriver.Chrome()
        self.index=1

    def get_content_list(self):  # 提取数据
        li_list = self.driver.find_elements_by_xpath('//ul[@id="live-list-contentbox"]/li')
        content_list = []
        for li in li_list:
            item = {}
            item['title'] = li.find_element_by_xpath('./a').get_attribute('title')
            item['anchor'] = li.find_element_by_xpath('.//span[@class="dy-name ellipsis fl"]').text
            item['watch_num'] = li.find_element_by_xpath('.//span[@class="dy-num fr"]').text
            item['image'] = li.find_element_by_xpath('.//img[@class="JS_listthumb"]').get_attribute('src')
            item['category'] = li.find_element_by_xpath('.//span[@class="tag ellipsis"]').text
            print(item)
            content_list.APPend(item)
        # 提取下一页元素
        next_url = self.driver.find_elements_by_xpath('.//a[@class="shark-pager-next"]')
        next_url = next_url[0] if len(next_url) > 0 else None
        return content_list, next_url

    def save_content_list(self, content_list):
        json_str = json.dumps(content_list, ensure_ascii=False, indent=4)
        with open('./douyu/douyu_{}'.format(str(self.index)) + '页.json', 'w', encoding='utf-8') as f:
            f.write(json_str)
        self.index += 1

    def run(self):  # 实现主要逻辑
        # start_url
        # 发送请求,获取响应
        self.driver.get(self.start_url)

        # 提取数据
        content_list, next_url = self.get_content_list()
        # 保存
        self.save_content_list(content_list)
        # 下一页数据的提取
        while next_url is not None:
            next_url.click()# 页面没有完全加载完
            time.sleep(5)
            content_list, next_url = self.get_content_list()
            # 保存
            self.save_content_list(content_list)

if __name__ == '__main__':
    douyu=DouYu()
    douyu.run()

```

相关阅读

爬虫实战17:多线程爱丝APP图片爬虫

# -*- coding: utf-8 -*- import os import json import requests import time from multiprocessing import Process, Queue, Po

用手机怎么盗取别人的qq密码?一键盗号神器!

【黑/客/徽/信/10484866】专业盗取微信密码,开房查询,通话记录查询,查询微信记录!随着互联网在国内的大面积普及,在意识到了互联网

提示购物后返淘金币怎么领取?领取规则介绍!

淘金币在淘宝当中还是挺重要的,因为有的时候是可以直接抵扣现金使用的,但在大家购物之后怎么去领取淘宝金币呢?请看下文的介绍,当然

01信息搜索:全面、快速查找全网你想要的任何信息、情报

遇见任何事情,第一件要做的事情都是搜索搜索心法1、找什么?准确描述搜索目标,纠正搜索思维。比如临时要办一个读书讲座没有头绪,就

建设武汉境外信用卡套现的方案(人在国外如何取现)

建设武汉境外信用卡套现的方案(人在国外如何取现)【商家微信号:21585 】专业从事信用消费额度提现业务4年之久;主要操作:蚂蚁花呗套

分享到:

栏目导航

推荐阅读

热门阅读