ajax将数据显示在class为content的标签中_利用selenium实现自动翻页爬取某鱼数据

基本思路:

首先用开发者工具找到需要提取数据的标签列表:

5a9dc170d4b5d4649862c26fc23ecd3c.png利用xpath定位需要提取数据的列表

6d118903b542e0f969043733a88becee.png然后再逐个提取相应的数据:

73a464ae58190db63b0cdaae77544eda.png保存数据到csv:

ab0a71d193bd7f5354fce59d9ae551dd.png利用开发者工具找到下一页按钮所在标签:

6df2d7870b78bcfee5e848cd6f369212.png利用xpath提取此标签对象并返回:

5349b526b11417e020369bd47b9bae81.png调用点击事件,并循环上述过程:

1d57bcf3d38deb8fd30158639012a1b1.png最终效果图:

953c36a61c6352d3fc867ecbecf50ca4.png代码:

from selenium import webdriver
import time
import re

class Douyu(object):

def __init__(self):
# 开始时的url
self.start_url = "https://www.douyu.com/directory/all"
# 实例化一个Chrome对象
self.driver = webdriver.Chrome()
# 用来写csv文件的标题
self.start_csv = True

def __del__(self):
self.driver.quit()

def get_content(self):
# 先让程序两秒,保证页面所有内容都可以加载出来
time.sleep(2)
item = {}
# 获取进入下一页的标签
next_page = self.driver.find_element_by_xpath("//span[text()='下一页']/..")
# 获取用于判断是否是最后一页的属性
is_next_url = next_page.get_attribute("aria-disabled")
# 获取存储信息的所有li标签的列表
li_list = self.driver.find_elements_by_xpath("//ul[@class='layout-Cover-list']//li")

# 提取需要的数据
for li in li_list:

item["user-id"] = li.find_element_by_xpath(".//div[@class='DyListCover-userName']").text
item["img"] = li.find_element_by_xpath(".//div[@class='DyListCover-imgWrap']//img").get_attribute("src")
item['class-name'] = li.find_element_by_xpath(".//span[@class='DyListCover-zone']").text
item["click-hot"] = li.find_element_by_xpath(".//span[@class='DyListCover-hot']").text
item["click-hot"] = re.sub(r'\n','',item['click-hot'])

# 保存数据
self.save_csv(item)

# 返回是否有下一页和下一页的点击事件的标签,
return next_page,is_next_url

def save_csv(self,item):
# 将提取存放到csv文件中的内容连接为csv格式文件
str = ','.join([i for i in item.values()])

with open('./douyu.csv','a',encoding='utf-8') as f:
if self.start_csv:
f.write("用户id,image,所属类,点击热度\n")
self.start_csv = False
# 将字符串写入csv文件
f.write(str)
f.write('\n')
print("save success")

def run(self):
# 启动chrome并定位到相应页面
self.driver.get(self.start_url)

while True:
# 开始提取数据,并获取下一页的元素
next_page,is_next = self.get_content()
if is_next!='false':
break
# 点击下一页
next_page.click()

if __name__=='__main__':
douyu_spider = Douyu()
douyu_spider.run()

欢迎关注公众号:Python爬虫数据分析挖掘,回复【开源源码】免费获取更多开源项目源码

公众号每日更新python知识和【免费】工具

faab4b9ba79094027c03ff04ea987402.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寻找单身狗和进阶版的单身狗

1.找单身狗 ,一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。 在做这个题目之前要理解一个知识点, 1、相同两个的数字异或得0 例如3^30 2、任何数字和0异或得数字本身 例如3^03#…

实体嵌入(向量化):用深度学习处理结构化数据

摘要: 本文详细阐述了深度学习如何来实现处理结构化数据的方法。嵌入源自于NLP(word2vec)中的单词学习,上图来自Aylien本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在图像和文本中都有较好的表现&a…

arcengine遍历属性表_Excel催化剂-遍历文件夹内文件信息特别是图像、音视频等特有信息...

在过往的功能中,有体现出在Excel上管理文件的极大优势,在文件的信息元数据中,有图片和音视频这两类特有的属性数据,此篇对过往功能的一个补充,特别增加了图片和音视频信息的遍历功能。使用场景在文件管理过程中&#x…

想要成为数据科学家?知道这11种机器学习算法吗?

摘要: 想要成为数据科学家?知道这十几种机器学习算法吗?赶快来了解一下吧,文中附各种算法的资源地址! 机器学习从业者都有不同的个性,虽然其中一些人会说“我是X方面的专家,X可以训练任何类型的…

Docker精华问答 | Consul是什么?

在计算机技术日新月异的今天, Docker 在国内发展的如火如荼。特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,那么今天我们继续关于Docker 的精华问答。1Q:Consul是什么?A:Consul是一个分布式…

2020科目一考试口诀_二级建造师考试科目有哪些2020

2020二级建造师考试科目有哪些:2020年二级建造师考试设《建设工程施工管理》、《建设工程法规及相关知识》两个公共科目和《专业工程管理与实务》科目(包含六个专业类别,任选一科报考)。(一)《专业工程管理与实务》科目分为6个专业类别:建筑工…

机器学习用于金融市场预测难在哪?

摘要: 本文主要讲述了机器学习用于金融市场预测难在哪?——金融间序是典型的部分可见马尔科夫决策过程(POMDP) 数据分布 小样本 难以计算的数据 十分复杂 部分可见马尔科夫决策过程 推荐系统的相似性 结束思索金融市场已经成为最早…

full join 和full outer join_多表关联:公式展开、join、过滤条件的顺序

这是在实现多表关联时想到的。我们现在这套体系,实现多表关联比较复杂。如果Superset能官方支持多表关联,不知道会是什么样的方案,复杂度如何。在公式这个层面,没有关联条件,只有两个列、或者多个列,相互之…

js提交java后台,双引号转义为quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决

//将接收到的jsonStr处理一次,就OK了 String newJson StringEscapeUtils.unescapeHtml4(jsonStr);

异构计算助力客户春节webp图片编码

摘要: 背景与挑战 技博客 GigaOM 曾报道:YouTube 的视频略缩图采用 WebP 格式后,网页加载速度提升了 10%;谷歌的 Chrome 网上应用商店采用 WebP 格式图片后,每天可以节省几 TB 的带宽,页面平均加载时间大约…

发动机压缩比怎么计算公式_怎么判断发动机有积碳,发动机积碳多的症状有哪些...

经过时间的积累,积碳作为发动机的通病几乎无处不有,很多车主也对此十分头疼。不过,很多车主小白并不了解车辆积碳是如何产生的,更不知道如何判断发动机是否有积碳,其实发动机积碳多的症状很容易让车主误以为车辆出现其…

Kubernetes之路 1 - Java应用资源限制的迷思

摘要: 随着容器技术的成熟,越来越多的企业客户在企业中选择Docker和Kubernetes作为应用平台的基础。然而在实践过程中,还会遇到很多具体问题。本文分析并解决了Java应用在容器使用过程中关于Heap大小设置的一个常见问题。随着容器技术的成熟&…

你家的饮水机,到底可以有多脏?

戳蓝字“CSDN云计算”关注我们哦!作者 | 胡巍巍出品 | CSDN(ID:CSDNnews)几年前,笔者在一所培训学校工作。因为学生多、学校大,老师也多,自然办公室也多。这种情况下,学校为了省事&a…

ajax前台传json到后台解析的方法以及注意事项

首先&#xff0c;如果是maven工程的话&#xff0c;需要在pom.xml文件中添加下方依赖<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classif…

java http get_我是如何进入阿里巴巴的-面向春招应届生Java面试指南(九)

基础篇基本功面向对象的特征1.final, finally, finalize 的区别 final—修饰符&#xff08;关键字&#xff09;如果一个类被声明为final&#xff0c;意味着它不能再派生出新的子类&#xff0c;不能作为父类被继承。因此一个类不能既被声明为 abstract的&#xff0c;又被声明为f…

链表的快慢指针思想的解决

看接下来的一道题目 1、给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 例子&#xff1a;[1,2,3,4,5] 返回中间节点3 [1,2,3,4,5,6] 返回中间节点4 我们该如何做呢&#xff0c;首先这里用到了快慢…

使用Helm 在容器服务k8s集群一键部署wordpress

摘要&#xff1a; Helm 是啥? 微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目&#xff0c;做为Kubernetes应用的一个包管理工具&#xff0c;可理解为Kubernetes的apt-get / yum&#xff0c;由Deis 公司发起&#xff…

保镖机器人作文_关于机器人作文400字

【第1篇】“爱闯祸”的机器人世纪科技发达&#xff0c;人类发明出了机器人&#xff0c;我也赶时髦&#xff0c;买了一个。可是&#xff0c;这是一个“爱闯祸”的机器人。我的学校正在举行科技展览会&#xff0c;科学老师建议我把机器人带去&#xff0c;让同学们开开眼界。第二天…

Jupyter Notebook数据科学高效技巧

摘要&#xff1a; 本文有一些关于Jupyter Notebook的干货&#xff0c;希望看完文章可以给你带来收获当我学习有关深度学习的优秀的fast.ai课程时&#xff0c;我学到了很多适用于通用软件工程的干货。我写这篇文章是为了总结这些技巧并与你分享。1.Jupyter Notebook拓展标准的Ju…

格罗方德起诉台积电侵犯16项专利、影响巨大;中兴通讯与印尼Smartfren展开合作;网传FB开发新通讯应用Threads……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 索尼将于9月5日在IFA 2019上…