admin 管理员组文章数量: 894196
爬取斗鱼直播平台的所有房间信息
1.首先确定数据的位置
每个房间的数据都在id=live-list-contentbox
的ul中
2.
实现翻页和控制程序结束
selenium中通过点击就可以实现翻页,观察存在下一页和不存在下一页时候标签的变化
存在下一页时:
不存在下一页时:
具体代码如下:
```
import json import time from selenium import webdriverclass DouYu(object):def __init__(self):self.start_url = ''self.driver = webdriver.Chrome()self.index=1def 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"]').textitem['watch_num'] = li.find_element_by_xpath('.//span[@class="dy-num fr"]').textitem['image'] = li.find_element_by_xpath('.//img[@class="JS_listthumb"]').get_attribute('src')item['category'] = li.find_element_by_xpath('.//span[@class="tag ellipsis"]').textprint(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 Nonereturn content_list, next_urldef 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 += 1def 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()
```
本文标签: 爬取斗鱼直播平台的所有房间信息
版权声明:本文标题:爬取斗鱼直播平台的所有房间信息 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688190052h190012.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论