Python爬虫序章---爬取csdn作者排行榜

news2024/12/25 0:48:57

上篇文章介绍了requests库获取数据的基本方法,本篇文章利用自动化测试工具selenium进行数据抓取,也会对代码部分进行详细解释,以便小伙伴们能够更加理解和上手。

一.selenium技术介绍

Selenium是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。Selenium 支持的语言包括C#,Java,Perl,PHP,Python 和 Ruby。目前,Selenium Web 驱动程序最受 Python 和 C#欢迎。 Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。在爬虫领域 selenium 同样是一把利器,能够解决大部分的网页的反爬问题。下面就进入正式的 study 阶段。

二.思路分析及部分成果展示

1.正确到达排行榜页面

为了更好的上手selenium,这里选择从百度开始进行搜索
首先进入百度,然后抓取输入框,进行输入csdn进行搜索
再者需要注意的是窗口的切换问题,当网页切换时,web仍然在初始页,因此1需要调用相应方法调转窗口
web.switch_to_window(web.window_handles[-1])
此语句为调转到最后一个窗口,相应的selenium方法在前面相关文章已经提高,大家可以参考下面文章

https://blog.csdn.net/qqshenbaobao/article/details/118156004?spm=1001.2014.3001.5501

2.抓包工具xpath路径获取

利用抓包工具,复制所要抓取元素xpath路径进行数据获取
在这里插入图片描述
xpath路径获取方式:
在这里插入图片描述

3.数据提取

以第一个div为例,这里粘贴出第一个div的元素层次分级,并进行所需元素精准定位。
在这里插入图片描述
注意:若获取批量数据进行列表迭代,不能利用xpath进行复制粘贴,因为不同的div定位不同,故应该在该div对象中进行相对定位获取所需要元素.
定位作者名称:

 nickName=div.find_element_by_xpath("./div/div/dl/dd/a").text

定位粉丝数量:

fscount=div.find_element_by_xpath("./div/div/dl/dt/span[1]").text

定位获赞数量:

hzcount=div.find_element_by_xpath("./div/div/dl/dt/span[2]").text
4.成果展示

在这里插入图片描述

5.完整代码
from selenium import  webdriver
from selenium.webdriver.common.keys import Keys
import time
web=webdriver.Chrome()
web.get("https://www.baidu.com/")
web.find_element_by_xpath("//*[@id='kw']").send_keys("csdn",Keys.ENTER)
time.sleep(2)
web.find_element_by_xpath('//*[@id="1"]/div/div[1]/h3/a[1]').click()
web.switch_to_window(web.window_handles[-1])
print(web.title)
time.sleep(2)
web.find_element_by_xpath('//*[@id="floor-www-index_558"]/div/div[4]/div/div[1]/div/ul/li[5]/a').click()
time.sleep(1)
web.switch_to_window(web.window_handles[-1])
web.find_element_by_xpath('//*[@id="floor-rank_460"]/div[2]/div[1]/div/div[1]/ul/li[8]/div[2]').click()
time.sleep(1)
div_list=web.find_elements_by_xpath('//*[@id="floor-rank_460"]/div[2]/div[2]/div/div[2]/div')
for div in div_list:
   nickName=div.find_element_by_xpath("./div/div/dl/dd/a").text
   fscount=div.find_element_by_xpath("./div/div/dl/dt/span[1]").text
   hzcount=div.find_element_by_xpath("./div/div/dl/dt/span[2]").text
   print("作者名:",nickName,"粉丝数:",fscount,"获赞数:",hzcount)
6.后续安排

码字不易,希望大家可以动动小手点个赞,后续会出更多高质量的文章供大家参考学习,一起加油吧!

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

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

相关文章

windows11远程连接Ubuntu桌面

如何通过Windows 11远程连接Ubuntu桌面 在日常开发过程中,很多时候是这样一种情形:一台装了Ubuntu系统的计算机作为远程服务器,开发人员则使用带Windows系统的计算机去连服务器进行开发。 连接服务器的方式有很多种,最简单的就是…

图扑软件荣获第十一届中国创新创业大赛全国赛优秀奖!

在近期结束的第十一届中国创新创业大赛全国赛(新一代信息技术)比赛中,图扑软件喜获成长组优秀奖。这是继“创客中国”创新创业大赛优胜奖荣誉后,再一次对图扑软件在新一代信息技术领域专业的认可!大赛围绕新一代信息技…

DW动手学数据分析Task4:数据可视化

目录1 了解matplotlib2 可视化图案3 matplotlib用法4 了解Seaborn1 了解matplotlib Matplotlib: 是 Python 的绘图库, 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 2 可视化图案 基本可视化团及场景使用 柱状图 场景&am…

如何实现机械臂的正解计算?

1. 机械臂运动学介绍 机械臂运动学 机器人运动学就是根据末端执行器与所选参考坐标系之间的几何关系,确定末端执行器的空间位置和姿态与各关节变量之间的数学关系。包括正运动学(Forward Kinematics)和逆运动学(Inverse Kinematic…

在线支付系列【3】支付安全之对称和非对称加密

有道无术,术尚可求,有术无道,止于术。 文章目录前言信息安全加密机制核心概念对称加密非对称加密JCE对称加解密1. 创建密钥2. 加密3. 解密非对称加解密1. 创建密钥2. 公钥加密3. 私钥解密前言 支付和金钱挂钩,支付安全显得尤为重…

域名被封的解决方案

如果您的域名被封,可能是域名下网站存在非法信息或敏感内容,导致被GFW屏蔽。 封禁原因及解决方案如下: 1. 域名解析的IP纳入黑名单 这种情况只需更换IP即可恢复正常,但换IP也只能解除一时的燃眉之急,一旦又被GFW发现很…

MySQL进阶——视图(view)

1. 视图 1.1 视图介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑&#xf…

MySQL详细教程,2023年硬核学习路线

文章目录前言1. 数据库的相关概念1.1 数据1.2 数据库1.3 数据库管理系统1.4 数据库系统1.5 SQL2. MySQL数据库2.1 MySQL安装2.2 MySQL配置2.2.1 添加环境变量2.2.2 新建配置文件2.2.3 初始化MySQL2.2.4 注册MySQL服务2.2.5 启动MySQL服务2.3 MySQL登录和退出2.4 MySQL卸载2.5 M…

【Python】如何为Matplotlib图像添加标签?

一、添加文本标签 plt.text() 用于在绘图过程中,在图像上指定坐标的位置添加文本。需要用到的是plt.text()方法。 其主要的参数有三个: plt.text(x, y, s)其中x、y表示传入点的x和y轴坐标。s表示字符串。 需要注意的是,这里的坐标&#x…

基于Springboot+Mybatis+mysql+vue电影院在线售票系统

基于SpringbootMybatismysqlvue电影院在线售票系统一、系统介绍二、所用技术三、功能展示1.主页(普通用户)2.影院管理员相关功能(影院管理员)3.系统管理权限(管理员)四、获取源码一、系统介绍 电影院网上售票系统拥有三种角色,用户、工作人员…

三星K2200复印机提示更换传输卷问题的简单处理

故障现象: 三星K2200复印机开机后提示更换传输卷; 故障分析与处理: 三星K2200复印机提示更换传输卷是转印带使用寿命到期,三星k2200复印件更换传输卷,是指转印带使用寿命到期了,需要更换传输卷。如果这台机器报传输卷一般是这台机器也有一条转印带,如果报这个看看上面…

C/C++数据结构(十一)—— 平衡二叉树(AVL树)

文章目录1. AVL树的概念2. AVL树的结点3. AVL树的插入🍑 更新平衡因子🍑 插入函数的实现4. AVL树的旋转🍑 左单旋🍑 右单旋🍑 左右双旋🍑 右左双旋🍑 总结6. AVL树的删除🍑 算法思想…

基于EasyExcel实现百万级数据导入导出

基于EasyExcel实现百万级数据导入导出 在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次…

2022-12-08版本:Open Inventor Toolkit SDK Crack

为什么使用 Open Inventor Toolkit Open Inventor SDK 是一种商业 3D 软件开发工具包 ( SDK ),适用于医疗和牙科、石油和天然气、工程领域的专业应用。 Open Inventor其面向对象的 API、可扩展的架构及其大量高级组件为软件开发人员提供了一个高级平台,…

JUC面试(五)——Collection线程不安全

Collection线程不安全 前言 当我们执行下面语句的时候&#xff0c;底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组&#xff0c;伴随着初始值为10 当执行add方法后&#xff0c;如果超过了10&#xff0c;那么会进行扩容&#xff0c;扩容的大小…

Spring源码学习:三级缓存的必要性

目录前言概述正文Spring的生命周期Spring中循环依赖场景Spirng中的三级缓存Spring一级缓存解决循环依赖Spring二级缓存解决循环依赖Spring三级缓存解决循环依赖总结前言 工作中可能会碰到循坏依赖问题&#xff0c;所以了解其Spring设计原理&#xff0c;对于解决问题更加高效。…

c++ - 第26节 - c++知识梳理

1.STL知识梳理 STL知识掌握&#xff1a; 底层实现角度&#xff1a;六大组件 上层用的角度&#xff1a;容器、算法、迭代器 底层实现角度&#xff1a; 注&#xff1a; 1.可以认为迭代器是容器和算法的粘合剂&#xff0c;如果没有迭代器&#xff0c;那么算法要访问容器有两大问题…

三种循环的区别

三种循环的区别:1.for循环和while循环先判断条件是否成立&#xff0c;然后决定是否执行循环体&#xff08;先判断后执行)2.do..while循环先执行一次循环体&#xff0c;然后判断条件是否成立&#xff0c;是否继续执行循环体(先执行后判断)for和while的区别:1.条件控制语句所控制…

英语学习打卡day2

2023.1.20 1.if虚拟语气的倒装 If it were not for your help, I would be homeless. Were it not for your help, I would be homeless. 要不是你的帮助&#xff0c;我会无家可归。 2.plausible adj.似乎有理的;有道理的 plaus拍手&#xff0c;鼓掌 ible可…的- >能鼓掌的…

注册中心(一)

注册中心&#xff08;一&#xff09; 业务痛点 项目的架构从以前的单体结构发展到现在的微服务。不仅服务的数量变的多了&#xff0c;而且服务都是多节点的部署。 假如在serviceA去调用serviceB&#xff0c;当serviceA会在配置中配置一个serviceB的ip和port进行通信。 当se…