程序说明:爬取斗鱼上的直播间封面,房间名字,房间分类
1>需要用到Selenium
Selenium的安装
pip install selenium
Selenium模块需要调用浏览器,需要配置selenium的浏览器驱动
Chrome(谷歌)
下载对应版本的chromedriver.exe,并且放到chrome.exe的目录当中
下载地址 私聊获取 这是淘宝镜像地址,可以根据自己的电脑版本进行下载
selenium之 chromedriver与chrome版本映射表:大家可以自行百度
准备工作差不多就可以了
2>接下来就是代码部分
from selenium import webdriver
import time
class DouyuSpider(object):
def __init__(self):
self.start_url = "https://www.douyu.com/directory/all"
self.driver = webdriver.Chrome()
def get_content_list(self):
# live-list-contentbox
list_li = self.driver.find_elements_by_xpath('//ul[@id="live-list-contentbox"]/li')
content_list = []
for li in list_li:
item = {}
item['room_img'] = li.find_element_by_xpath('.//span[@class="imgbox"]/img').get_attribute('src')
item['room_name'] = li.find_element_by_xpath('./a').get_attribute('title')
item['room_cate'] = li.find_element_by_xpath('.//span[@class="tag ellipsis"]').text
content_list.append(item)
print(content_list)
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):
pass
def run(self):
# 1 start_url
# 2 发送请求 获取响应
self.driver.get(self.start_url)
# 3 提取数据 提取下一页
content_list,next_url = self.get_content_list()
# 4 保持数据
self.save_content_list(content_list)
# 5 点击下一页元素,循环
while next_url is not None:
next_url.click()
time.sleep(2)
content_list, next_url = self.get_content_list()
self.save_content_list(content_list)
if __name__ == '__main__':
douyu = DouyuSpider()
douyu.run()