『python爬虫』11. xpath解析实战之获取csdn文章信息(保姆级图文)

news2024/11/15 10:30:45

目录

    • 网页结构分析
    • 爬取思路
      • 得到所有的文章
      • 遍历每个文章得到其中的信息
    • 实现代码
    • 总结


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

在这里插入图片描述
在这里插入图片描述

网页结构分析

我的csdn主页
https://blog.csdn.net/u011027547

我们先找一篇文章内容的div,具体操作为逐渐向更大范围的div查找,直到找到包含所有文章的结构体。
在这里插入图片描述
再往上一级就遇到了所有文章的列表结构了,所以我们可以确定上面的内容已经是每篇文章的div单位了
在这里插入图片描述
而且在这一级的div下有很多相同结构的div列表,也佐证了我们的结构判断。


爬取思路

xpath 与 full xpath路径在部分网页会出现full xpath无法返回内容的情况,所以为了兼容性建议使用xpath,用full xpath会返回一个空列表。

得到所有的文章

  • 第1个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]
  • 第2个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]
  • 第3个文章的div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[3]
  • 所以拿到每一个文章div
    //*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div

遍历每个文章得到其中的信息

  • 文章与title的相对比较
    //[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] ./article/a/div[2]/div[2]/div/div[3]/span
    //
    [@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] /article/a/div[2]/div[2]/div/div[3]/span
    所以只需要相对路径./article/a/div[2]/div[2]/div/div[3]/span即可

实现代码

只做了当前展示页面的爬取


import requests
from lxml import etree

url = "https://blog.csdn.net/u011027547"
headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'}
resp = requests.get(url,headers=headers)
print(resp)
# print(resp.text)

# 解析
html = etree.HTML(resp.text)

# 第1个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]
# 第2个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]
# 第3个文章的div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[3]
# 所以拿到每一个文章div
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div

# 文章与title的相对比较
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1] ./article/a/div[2]/div[2]/div/div[3]/span
# //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]  /article/a/div[2]/div[2]/div/div[3]/span

divs = html.xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div')# 拿到每一个文章的div
# print(divs)
for div in divs:  # 每一个文章信息
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[1]/div[1]/h4
    title = div.xpath("./article/a/div[2]/div[1]/div[1]/h4/text()")[0]
    print("文章标题:"+title)
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[2]/div/div[3]/span
    read_number = div.xpath("./article/a/div[2]/div[2]/div/div[3]/span/text()")[0]
    print("阅读量:"+read_number)
    # //*[@id="userSkin"]/div[2]/div/div[2]/div[1]/div[2]/div/div/div[1]/article/a/div[2]/div[2]/div/div[4]/span
    zan = div.xpath("./article/a/div[2]/div[2]/div/div[4]/span/text()")[0]
    print("点赞数:"+zan)



总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


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

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

相关文章

AI 工具合辑盘点(八)持续更新 之 AI 面部生成工具和AI 角色生成工具

(一)AI 面部生成工具 需要一张真实人物的肖像画来用于你的营销材料?正在寻找具有特定面部特征的模特,但你的预算有限?正在创建你的买家人物,但不想从互联网上窃取图片? 如果是这样&#xff0c…

pytorch——损失函数之nn.L1Loss()和nn.SmoothL1Loss()

文章目录 【回归损失函数】L1(MAE)、L2(MSE)、Smooth L1 Loss详解1. L1 Loss(Mean Absolute Error,MAE)1.1 数学定义1.2 、使用场景与问题1.3 、如何使用 2. L2 Loss(Mean Squared E…

[项目实战] 博客系统实现

水到渠成,冲呀冲呀 文章目录 1 准备工作1.1 在Idea创建一个Maven项目1.2 引入servlet,masql,jackson依赖1.3 准备web.xml文件 2. 数据库建表3. 封装DBUtil4. 创建实体类4.1 Blog类4.2 User类 5. 封装数据库的增删改查5.1 对于blog的操作5.1.1 增加操作5.1.2 根据blogId查询5.1 …

Notepad++配置C语言环境和C++环境

背景: Notepad是我们经常使用的编辑器,我们可以用它编译和运行各种类型的文档,其中就包括了C和C文档。但是编译和运行C或者C文档首先要配置编译环境,下面给大家分享一下如何在NotePad配置C/C编译环境。 工具: NoteP…

在全志V851S开发板上进行屏幕触摸适配

1.修改屏幕驱动 从ft6236 (删掉,不要保留),改为下面的 路径:/home/wells/tina-v853-open/tina-v853-open/device/config/chips/v851s/configs/lizard/board.dts(注意路径,要设置为自己的实际路…

docker-compose部署flume

一、docker-compose部署 1. 依赖的服务/组件 java8flume 1.9.0 2. 下载离线安装包 jdk8https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gzflume 1.9.0https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gzs…

【Python入门篇】——Python基础语法(标识符与运算符)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

鸿蒙Hi3861学习六-Huawei LiteOS(软件定时器)

一、简介 软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器。当经过设定的Tick时钟计数值后,会触发用户定义的回调函数。定时精度与系统Tick时钟周期有关。 硬件定时器受硬件的限制,数量上不足以满足用户的实际需求。因此&#xff0…

【算法】什么是离散化

作者:指针不指南吗 专栏:算法篇 🐾人类做题的过程,就是个暴搜的过程🐾 文章目录 1.引入2.思路3.模板题 1.引入 特指有序、整数的离散化。 离散化,本质上是一种哈希,它在保持原序列大小关系的前…

肝一肝设计模式【六】-- 装饰器模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 文章目录 系列文章目录前言一、什么是装饰器模…

PLSQL Developer远程连接Oracle报错提示:“ORA-12541:TNS:无监听程序”的解决方案及思路

环境: 1、Windows Server 2、远程Oracle数据库:Oracle11g R2 3、PL/SQL程序:PL/SQL Developer Version 11.0.5.1790 (64 bit) 一、思路拆解: 此现象一般定位到远端的监听服务来找问题,在远端查看监听服务状态&#x…

DolphinScheduler 3.1.4详细教程

文章目录 第一章 DolphinScheduler介绍1.1 关于DolphinScheduler1.2 特性1.3 名词解释1.3.1 名词解释1.3.2 模块介绍 第二章 DolphinScheduler系统架构2.1 系统架构图2.2 架构说明该服务包含: 2.3 启动流程活动图2.4 架构设计思想2.4.1 去中心化vs中心化2.4.1.1 中心…

制作帮助中心过程中常见的误区与解决方法?

制作帮助中心是为了帮助用户了解产品和解决问题的重要手段。然而,在制作的过程中,我们可能会遇到一些误区,这些误区可能会导致我们的帮助中心无法达到预期的效果。因此,在本文中,我们将探讨制作帮助中心过程中常见的误…

今年产品经理这么卷,大家怎么面试的呢?

随着互联网行业的快速发展,产品经理这个职位变得越来越重要。产品经理需要具备多方面的能力,如市场调研、用户需求分析、产品设计、项目管理等等。因此,对于企业来说,招聘一名合适的产品经理是非常关键的。 而对于求职者来说&…

中国奇人周兴和——记四川星河建材有限公司董事长周兴和(中)

经商送礼 关押收审 从10多岁就开始闯荡社会的周兴和,可以说是社会大熔炉锻炼出来的奇人。他仅有小学文化程度,但是他的社会经验和社会知识却相当丰富,可以称得上是一个“社会学专家”。他口才超常,其处事能力、应变能力和综合能力…

ASEMI代理ADUM1250ARZ-RL7原装ADI车规级ADUM1250ARZ-RL7

编辑:ll ASEMI代理ADUM1250ARZ-RL7原装ADI车规级ADUM1250ARZ-RL7 型号:ADUM1250ARZ-RL7 品牌:ADI/亚德诺 封装:SOIC-8-150mil 批号:2023 引脚数量:8 工作温度:-40C~105C 安装类型&#…

4.7亿加元!爱立信和加拿大政府巨额投资量子计算

​ (图片来源:网络) 爱立信与加拿大政府的研发合作为期五年,项目价值超过4.7亿加元(约合23.9亿元人民币),主要投入在爱立信位于安大略省渥太华和魁北克省蒙特利尔的工厂。预计将创造数百个工作…

三十岁成功入职京东啦!

我是小九小九不爱喝酒: 自己工作5年后,我成功拿到了京东的offer。下面说下我是如何从传统行业到京东的经历,希望能对你有所帮助。 本科我学的是机械电子工程专业,2013年本科毕业后,同学们大多到各研究所从事智能机器人…

真题详解(归纳法)-软件设计(六十七)

真题详解(关系模型)-软件设计(六十六)https://blog.csdn.net/ke1ying/article/details/130495791 1、2018上半年 将小阶向大阶对奇,尾数右移动 解析: 0.23 * 10的2次方 0.22 *10的3次方 第一步:0.023*10的3次方,…

2022年收入增长23%,23年Q1大涨85%,上市后英方软件交出了一份亮眼的答卷

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 2023年4月26日,英方软件(688435)公布了上市后首个业绩报告,包括2022年度财报和2023年第一季度财报。披露财报显示,英方软件在2022年实现营业收入1.97亿元&#xff…