每日分享:

千万不要因为别人的否定就开始自我否定,人生本来就是一个主观的过程,别人是否喜欢你,其实是对方世界的事,所以面对别人的不喜欢,不要自卑不要刻意讨好,你要专注的做自己

思路分析:

  1. url(网页的url)
  2. 创建driver对象
  3. 发送get请求
  4. parse data(分析处理数据)
  5. save data(保存数据)
  6. 翻页

在一个循环中反复执行4、5、6操作,如果到最后一页则跳出循环。

再说一些我写代码遇到的一些问题:

  1. 用xpath可以找到你想找的元素,但如果要对其进行点击操作,需要先下滑页面至页面内有该元素之后才可以点击
  2. 关于斗鱼中每个房间的封面图片的爬取,花了很多时间尝试,感觉应该设置有反爬,直接爬取,爬到了三张图片,后来设置了休眠时间,爬到图片多了几张,20s爬一张也只爬了不到十张。(因为自己也是初学者,还没有学习反爬、反反爬,所以就放弃了)
  3. 下滑操作前的time.sleep(1)是一定要写的(休眠时间自己设定),当时我是在这卡了很长的时间,因为发现网页并不下滑,所以也导致“下一页“这个元素点击失败。如果不设置休眠一秒,仔细看会发现,并不是页面不下滑,是页面下滑了之后又回到了顶部,可能这是一种反爬吧。
  4. 建议下一页的xpath自己用一个靠谱的方法写,比如用内容查找;当时直接复制的标签的xpath,翻页到第四页就出错了,原因可能是xpath未找到
  5. 源码注释比较详细
  6. 如果全部爬取(我当时是200多页),爬取时间会挺长的

源码如下:

from selenium import webdriver
import timeclass Dou_yu(object):def __init__(self):self.url = 'https://www.douyu.com/directory/all'self.driver = webdriver.Chrome()def parse_data(self):# 建议加上这个休眠,不然可能会因为网速问题,导致页面未加载完毕,爬取失败time.sleep(3)# 每一页的所有房间存入列表room_list = self.driver.find_elements('xpath', '//*[@id="listAll"]/section[2]/div[2]/ul/li/div')# 120个,证明没出错# print(len(room_list))# 创建列表,暂时存放爬取的信息data_list = []for room in room_list:# 将爬取的各个信息放入字典tmp = {}tmp['title'] = room.find_element('xpath', './a/div[2]/div[1]/h3').get_attribute('textContent')tmp['type'] = room.find_element('xpath', './a/div[2]/div[1]/span').get_attribute('textContent')tmp['owner'] = room.find_element('xpath', './a/div[2]/div[2]/h2/div').get_attribute('textContent')tmp['popularity'] = room.find_element('xpath', './a/div[2]/div[2]/span').get_attribute('textContent')data_list.append(tmp)# tmp['picture'] = room.find_element('xpath', './a/div[1]/div[1]/picture/img').get_attribute('src')# print(tmp)return data_listdef save_data(self, data_list):# 先转换为str,方便写入文件data_list = str(data_list)with open('斗鱼.txt', 'a', encoding='utf-8')as f:f.write(data_list+'\n')def run(self):self.driver.get(self.url)# url# 创建driver# 发送get# parse-datawhile True:data_list = self.parse_data()# save-dataself.save_data(data_list)# 翻页# 这个time.sleep(1)是一定要写的(休眠时间自己设定),当时我是在这卡了很长的时间,因为发现网页并不下滑,所以也导致“下一页“这个元素点击失败。如果不设置休眠一秒,仔细看会发现,并不是页面不下滑,是页面下滑了之后又回到了顶部,可能这是一种反爬吧。time.sleep(1)# 直接设置一个比较大的值,下滑到底部js = 'scrollTo(0,10000)'# 执行js代码self.driver.execute_script(js)# 仔细观察斗鱼直播的第一页和最后一页,他们所属的li标签内的aria-disabled值不一样,不是尾页为faule,尾页为true,到尾页后跳出循环if self.driver.find_element('xpath', '//li[@title="下一页"]').get_attribute('aria-disabled') == 'true':break# 找到下一页按钮并点击self.driver.find_element('xpath', '//span[contains(text(),"下一页")]').click()if __name__ == '__main__':dou_yu = Dou_yu()dou_yu.run()

部分结果如下:

爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取相关推荐

  1. 爬虫入门—requests模块基础之关键字搜狗搜索信息页面爬取

    爬虫入门-requests模块基础之关键字搜狗搜索信息页面爬取 Author: Labyrinthine Leo   Init_time: 2021.02.16 Key Words: Spider.r ...

  2. 直播行业的梦幻泡影:主播们的数据人生

    2020年,风口之上的直播行业成为了众人关注的焦点,千亿的市场规模引来无数企业和个人踏破门槛.然而,在人们看到直播行业光鲜的一面的同时,相关的问题也逐一浮出水面. 在直播行业爆出的各种问题中,平台数据 ...

  3. 北美票房排行榜 实时_快手直播丨主播实时直播监测数据分享——思文22号美妆童装专场...

    监测时间:2020年10月22日 监测达人播主:思文22号美妆童装专场 直播主题:美妆➕童装专场 实时监测:根据品牌方.机构需求对直播间进行实时数据跟踪,其中包括人数峰值.弹幕数.弹幕人数.礼物收入( ...

  4. 性、谎言、直播间,网红主播的生存游戏和金钱帝国

    性.谎言.直播间,网红主播的生存游戏和金钱帝国(转) 作者:黄周颖,编辑:郑道森 青年歌手关迟在刚毕业的时候,就残酷地发现民族声乐已经快被市场淘汰了--几乎没有商演会请歌手去唱一首民歌.但在刚刚兴起的 ...

  5. python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)

    python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...

  6. 【爬虫】【python】微信公众号信息的爬取(以南中医青年为例)

    微信公众号信息的爬取 1.Selenium库来获取源码 打开搜狗微信,在搜索框中输入"南中医青年",这里就搜索到了南中医青年发布的公众号文章结果 但是在浏览器中复制浏览器地址后再度 ...

  7. 出海品牌直播带货:虚拟主播的优势与挑战,以及未来趋势揭秘

    随着全球化的发展和网络技术的进步,海外直播带货成为了品牌拓展海外市场的一种新方式.而在这个数字化时代,虚拟主播的出现给海外直播带货带来了全新的可能性. 在传统直播带货中,品牌需要派遣代表或明星代言人亲 ...

  8. 四川途志:抖音主播在直播时需要注意什么?

    越来越多的人将抖音作为自己的快乐源泉,在众多网络社交平台上尤其受到青睐!其中很多品牌都加入了抖音,开始了自己的抖音商机之旅.货真价实的派送可以说是风口浪尖.抖音短视频平台具备直播功能,不少抖音用户开通 ...

  9. 最没灵魂的爬虫——Selenium 游戏信息的爬取与分析

    最没有灵魂的爬虫--Selenium 游戏信息爬取与分析 准备工作 IDE选取 selenium安装 ChromeDriver安装与配置 还需要用到的其他python库 数据爬取 杉果游戏的数据获取 ...

最新文章

  1. Python基础学习!基本元素,数字,字符串以及变量
  2. python一次性读取整个文件-python-文件中的行是否读取整个文件
  3. linux上添加下载源的时候报错:无法添加 PPA:“‘此 PPA 不支持 bionic‘”,以及关于linuxPPA的介绍,如何查找软件包的PPA源,并添加PPA
  4. 启帆工业机器人综合收入如何_发那科工业机器人ROBOGUIDE如何更方便的查看机器人报警日志...
  5. Airflow使用入门指南
  6. DockOne技术分享:十个问题带你了解Windows Docker
  7. 初次接触 Lottie
  8. 在WIN7下用NETSH命令有效防止ARP攻击
  9. c最简单的编程语言,世界上最简单的中文编程语言
  10. Mac安装MongoDB
  11. 解决thinkpad sl410 evc windows7硬盘安装ubuntu12.04以后,windows 无线出现断开网速慢等问题
  12. untiy Input 获取鼠标以及触摸操作
  13. 双排四点接触球转盘轴承的有限元分析
  14. Android的序列化(Serializable和Parcelable)
  15. 编译原理 C-Minus词法分析(FLEX)
  16. 一文叫你学会用JavaWeb开发共享图书馆系统(附加支付宝沙箱支付接入)
  17. proof_LDPC
  18. vue-cli+mock.js+axios模拟前后台数据交互
  19. 云平台支持哪些java应用服务器_腾讯云部署javaWeb项目之一应用服务器
  20. 蓝桥杯真题:作物杂交

热门文章

  1. 前端~css~基准线与行高、行距和半行距/圆角矩形~
  2. 算法实现数字编号翻译为英文
  3. 笔记本电脑显示以太网未连接_如何向笔记本电脑添加以太网连接
  4. 国企的面试我们应该怎么准备?
  5. 华为新人培养计划曝光!(新员工培训就该这么做)
  6. 【uiautomation】获取微信好友名单,可指定标签 全部
  7. get_isPlaying can only be called from the main thread unity3d
  8. Mysql数据库基础知识
  9. 抖音的商业定位和内容定位
  10. android----Android语音播报的两种简单实现