Python爬取CSDN博客所有文章

2023-05-16

 需求


Python爬取某个账号CSDN博客所有文章的标题,类型,创建时间,阅读数量,并将结果保存至Excel。

分析


CSDN主页URL为:https://blog.csdn.net/seanyang_/article/list/1
根据url可以得到其他页数的链接在https://blog.csdn.net/seanyang_/article/list/页数
主页F12查看元素,可以看到每一个文章列表所在class为article-list
每一篇文章所在class为article-item-box,如图可以herf,文章标题,创建时间,文章阅读数

 Requests获取内容
           

Requests发送请求,获取网页内容,这里注意需要加上请求头。
 self.headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36"
                                      "(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
                        }
 response = requests.get(f'{self.url}/{page_num}', headers=self.headers)
            response.encoding = response.apparent_encoding
            response.raise_for_status()
            content = response.content

BeautifulSoup解析内容

BeautifulSoup根据标签的属性和属性值获取到想要的内容。

soup = BeautifulSoup(content, 'html.parser')
article_table = soup.find('div', class_='article-list')#获取到文章列表

for article in article_table.find_all('div', class_='article-item-box'):#对于每一个文章
    article_type = article.a.span.text #逐级查找标签,找到文章类型(感觉BS很灵活啊)
    article_url = article.a["href"]
    article_span = article.a.find_all('span')
    for i in article_span:
        i.clear()#清空span标签然后获取标题
    article_name = article.a.get_text().strip() #获取文章名称
    create_date = article.find('div', class_='info-box').find('span', class_='date').text.strip()#获取到date这里查找标签操作真厉害
    read_num= article.find('div', class_='info-box').find('span', class_='read-num').text #查找到阅读量,实际页面无评论数量所以这里偷懒乐
    comment_num=read_num
    print(article_type, article_name, article_url, create_date, read_num, comment_num)#输出值

结果写入CSV文件

with open('csdn_crawler.csv','w',encoding='utf-8')as f:
    write=csv.DictWriter(f,fieldnames=['type','href','name','date','view_num'])#写入CSV文件的列名行:
    write.writeheader()
    write.writerows(result_list)#将包含字典的列表全部写入到CSV文件中

 运行结果

 完整代码

import requests
import re
import csv
from bs4 import BeautifulSoup
import requests
headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
                                      "(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
                        }
url="https://blog.csdn.net/seanyang_/article/list"
result_list=[]
for page_num in range(1, 100):
    response = requests.get(f'{url}/{page_num}', headers=headers)
    response.encoding = response.apparent_encoding
    content = response.content
    soup = BeautifulSoup(content, 'html.parser')
    article_table = soup.find('div', class_='article-list')  # 获取到文章列表
    #抓大放小,先把每一个item拿出来,再从item里拿细节。
    if article_table==None:
        break


    for article in article_table.find_all('div', class_='article-item-box'):
        result={}
        result['type']=article.a.span.text
        result['href']=article.a["href"]
        article_span = article.a.find_all('span')
        for i in article_span:
            i.clear()  # ???
        result['name']=article.a.get_text().strip()
        result['date']=article.find('div', class_='info-box').find('span', class_='date').text.strip()
        result['view_num']=article.find('div', class_='info-box').find('span', class_='read-num').text
        result_list.append(result)
    print(result_list)

with open('csdn_crawler.csv','w',encoding='utf-8')as f:
    write=csv.DictWriter(f,fieldnames=['type','href','name','date','view_num'])#写入CSV文件的列名行:
    write.writeheader()
    write.writerows(result_list)#将包含字典的列表全部写入到CSV文件中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬取CSDN博客所有文章 的相关文章

随机推荐

  • 一段小代码

    今天在微博上看到一段小程序 xff0c 博主问会不会core xff0c 如果core的话 xff0c 会是在哪一行 程序代码如下 include lt stdio h gt struct str int len char s 0 stru
  • LaTeX技巧心得28:如何在文中实现带圈的数字和圈中加号

    LaTeX技巧心得28 xff1a 如何在文中实现带圈的数字 1 xff09 使用 textcircled 命令 xff0c 后面的参数可以是一个字符或者汉字 xff08 配合CJK xff09 xff0c 甚至也可以是公式 xff0c 但
  • codeblocks 使用汇总

    享受Code Blocks编辑快感的几个关键 原文地址 xff1a http blog csdn net Utensil archive 2008 12 24 3593502 aspx 感谢Loaden的补充 此文是对帖子http wxfo
  • ubuntu tmux 快捷键失效

    参阅http superuser com questions 266725 tmux ctrl b not workinghttp superuser com questions 266725 tmux ctrl b not working
  • git 各种错误 HTTP request failed

    报错fatal HTTP request failed 版本太低 xff0c 源码安装最新版本即可 https mirrors edge kernel org pub software scm git 下载比较新的安装包tar xvzf x
  • 我的学习之路—5月1号开始,每周至少写5篇文章

    xfeff xfeff 爱拼才会赢 xff0c 这不仅仅是一句宣言 xff0c 而是一种态度 一种乐观向上的态度 一种端正的态度 请相信 xff0c 有什么样的态度 xff0c 就有什么样的结果 有什么样的态度 xff0c 就有什么样的人生
  • Serverlet生命周期

    xfeff xfeff Serverlet简介 xff1a Servlet Server Applet xff0c 全称Java Servlet xff0c 未有中文译文 是用Java编写的服务器端程序 其主要功能在于交互式地浏览和修改数据
  • CentOS下yum安装wine

    Linux下安装wine可以从源码编译安装 xff0c 但一般都觉得麻烦 xff0c 所以尽量利用yum进行安装 xff0c 解决很多包的依赖关系 首先安装一个epel rpm ivh http dl Fedoraproject org p
  • Maven使用教程

    一 Maven介绍 我们在开发项目的过程中 xff0c 会使用一些开源框架 第三方的工具等等 xff0c 这些都是以jar包的方式被项目所引用 xff0c 并且有些jar包还会依赖其他的jar包 xff0c 我们同样需要添加到项目中 xff
  • Linux下 文件类型不同颜色的含义

    linux 文件颜色的含义 蓝色 代表目录 绿色 代表可执行文件 红色 表示压缩文件 浅蓝色 表示链接文件 灰色 表示其他文件 红色闪烁 表示链接的文件有问题了 黄色 表示设备文件 蓝色文件 目录 白色文件 一般性文件 xff0c 如文本文
  • vim常用命令总结

    vim 选择文本 xff0c 删除 xff0c 复制 xff0c 粘贴 文本的选择 xff0c 对于编辑器来说 xff0c 是很基本的东西 xff0c 也经常被用到 xff0c 总结如下 xff1a v 从光标当前位置开始 xff0c 光标
  • Understanding ECMAScript 6

    原文 内容列表 简介 浏览器与 Node js 兼容性这本书的受众概述帮助与支持Block Bindings var 声明与提升 Hoisting 块级声明循环中的块级绑定全局块级绑定
  • Spring boot WebMvcConfigurerAdapte方法已经过时解决方法

    在spring boot 2 0以后 WebMvcConfigurerAdapter 这个方法已经过时 xff0c 通过百度网上的资料之后发现很多人说是改成继承WebMvcConfigurationSupport这个类 xff0c 这种方式
  • Linux开机详细流程

    计算机启动分为内核加载前 加载时和加载后3个大阶段 xff0c 这3个大阶段又可以分为很多小阶段 xff0c 本文将非常细化分析每一个重要的小阶段 内核加载前的阶段和操作系统无关 xff0c Linux或Windows在这部分的顺序是一样的
  • SDV、SIT、SVT、DFX、UAT

    SDV System design Verify 系统设计验证 SIT System Integration Testing 系统集成测试 xff0c 也叫做集成测试 是软件测试的一个术语 xff0c 在其中单独的软件模块被合并和作为一个组
  • 【Linux】Windows10 Ubuntu子系统初始配置及开启VNC

    环境 描述 xff1a 目标环境 Ubuntu18 04 已经通过win10 管理器安装好子系统处于初始化状态使用运行框 wsl 访问Ubuntu 系统的文件内容 配置阿里的apt get 源代 sudo vi etc apt source
  • 蓝桥杯_刷题_天干地支

    天干地支 题目描述 古代中国使用天干地支来记录当前的年份 天干一共有十个 xff0c 分别为 xff1a 甲 xff08 ji xff09 乙 xff08 y xff09 丙 xff08 b ng xff09 丁 xff08 d ng xf
  • 项目干系人

    项目干系人 xff08 Project Stakeholder xff09 xff0c 也称为项目利害关系者 是积极参与项目或其利益因项目的实施或完成受到影响的个人和组织 xff0c 这些利害关系着还可以对项目的目标或者结果施加影响 项目管
  • 搭建LAMP环境

    LAMP 是指Linux xff08 操作系统 xff09 43 Apache xff08 HTTP 服务器 xff09 43 MySQL xff08 数据库 xff09 和 PHP xff08 网络编程语言 xff09 xff0c 一般用
  • Python爬取CSDN博客所有文章

    需求 Python爬取某个账号CSDN博客所有文章的标题 xff0c 类型 xff0c 创建时间 xff0c 阅读数量 xff0c 并将结果保存至Excel 分析 CSDN主页URL为 xff1a https blog csdn net s