python爬取csdn的文章内容

news2025/7/27 23:22:39

今天写了一个爬取csdn文章的

初学不太会,下面代码有时间可以自行优化

新建python文件,把我的代码复制进去保存

把依赖python install 一下

import re
import urllib.error
import urllib.request
import os
import tkinter as tk
from bs4 import BeautifulSoup


def main():
    baseurl = entry_url.get()
    # baseurl = "https://blog.csdn.net/qq_57420582/article/details/133796601?spm=1001.2014.3001.5502"
    getDate(baseurl)
    # print(''.join(datelist))
    win.destroy()

def getDate(baseurl):
    html = askURL(baseurl)
    soup = BeautifulSoup(html,"html.parser")
    datelist = []
    pattern = r'src="(.*?)"'
    htmlname = soup.find('h1', class_="title-article")
    htmlname = str(htmlname).replace("<p>", "").replace("</h1>", "")
    datelist.append(htmlname[48:] + "\n")
    htmledit = soup.find('div',class_="htmledit_views")
    for item in htmledit:
        item = str(item).replace("<p>","").replace("</p>","\n").replace("<br/>","\n").replace("<h2>","").replace("</h2>","\n").replace("<blockquote>","").replace("<!-- -->","").replace("</blockquote>","\n")
        # datelist.append(item)
        match = re.search(pattern, item)
        if match:
            url = match.group(1)
            datelist.append(url+"\n")
        else:
            datelist.append(item)
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")  # 找到用户桌面的路径
    savepath = os.path.join(desktop_path, "csdn爬取文件")  # 文件夹名称
    saveDate(''.join(datelist),savepath,htmlname[48:])
    return datelist

def askURL(url):
    head = {
   "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}
    request=urllib.request.Request(url,headers=head)
    html=""
    try:
        response=urllib.request.urlopen(request)
        html=response.read().decode("utf-8")
        # print(html)
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

    return html

def saveDate(datalist,savepath,savename):
    if not os.path.isdir(savepath):  # 判断是否存在该文件夹,若不存在则创建
        os.mkdir(savepath)  # 创建
    with open(savepath + "\\" + savename +".txt", 'w', encoding='utf-8') as file:  # 打开这个文件
        file.write(datalist)  # 打印文字

def frame_center(window, width, height):
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
    x = (screen_width - width) // 2
    y = (screen_height - height) // 2
    window.geometry(f"{width}x{height}+{x}+{y}")


if __name__ == '__main__':
    win = tk.Tk()
    win.title('csdn爬取器')  # 窗口名字
    frame_center(win, 400, 200)  # 窗口大小
    win.resizable(False, False)

    label = tk.Label(win, text='请输入网址:')  # 窗口内文字
    label.pack(pady=10)  # 窗口内容间距

    label1 = tk.Label(win, text='(爬取需要一些时间哦!)')
    label1.pack(pady=0)

    entry_url = tk.Entry(win, width=30)  # 窗口内输入框
    entry_url.pack(pady=5)

    btn_record = tk.Button(win, text='开爬!', command=main)  # 窗口内按钮
    btn_record.pack(pady=40)
    print("爬取完毕")
    win.mainloop()

然后下载Axialis IconWorkshop  

这是从本地选取一个图片

确定

保存

然后我们就有了一个图标文件

新建文件夹,把图片和python文件放进去

在上面输入cmd回车,打开命令行窗口

pip install Pyinstaller

Pyinstaller -F -w -i klk.ico klk.py

然后我们就获得了,exe文件就在dist文件夹里面

我们运行exe程序

弹出这个窗口

在csdn选择一篇文章,复制url粘贴到这里

点击  开爬

可以在电脑桌面看到生成了一个csdn爬取文件

这里面就是爬到的内容了

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

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

相关文章

2023年Zotero最新同步教程-使用TeraCloud的25G免费空间实时跨设备同步文献

文章目录 1. 前言2.1. 注册账号2.1.1. 填写注册信息2.1.2. 创建账号成功2.1.3. 注意2.2. 扩容空间2.3. 打开WebDAV 3. Zotero配置WebDAV同步3.1. 设置网址3.2. 验证服务器3.3. 文件同步成功 4. 结语 1. 前言 Zotero免费版的存储空间是300m&#xff0c;一个图文PDF动辄两三M&am…

基于JAYA算法的无人机航迹规划-附代码

基于JAYA算法的无人机航迹规划 文章目录 基于JAYA算法的无人机航迹规划1.JAYA搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用JAYA算法来优化无人机航迹规划。 1.JAYA搜索算法 …

高效学习工具之AnkiMobile新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、设置参数、相关资料

文章目录 0 背景0.1 闭环学习0.2 什么是anki 1 开始使用1.1 导入1.2 创建空白组1.3 创建卡片1.3.1 利用anki创建卡片的两种方法1.3.2 复习材料分类 1.4 筛选&#xff08;做减法&#xff0c;拆分学习&#xff08;做子卡牌集合&#xff09;&#xff09;&#xff08;核心&#xff…

集简云slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

slack是一个工作效率管理平台&#xff0c;让每个人都能够使用无代码自动化和 AI 功能&#xff0c;还可以无缝连接搜索和知识共享&#xff0c;并确保团队保持联系和参与。在世界各地&#xff0c;Slack 不仅受到公司的信任&#xff0c;同时也是人们偏好使用的平台。 官网&#x…

3.12每日一题(有理函数不定积分)

两种方法&#xff1a; 1、拆项&#xff0c;然后分别加项减项拆&#xff0c;把分母降幂 注&#xff1a; x凑x的平方时前面要乘1/2 分子为x的平方可以分一个x去凑x的平方 2、联想三角有理函数公式&#xff0c;使用三角函数求解 用tant替换x&#xff1b;再通过二倍角公式降幂即可 …

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目

自定义的卷积神经网络模型CNN&#xff0c;对图片进行分类并使用图片进行测试模型-适合入门&#xff0c;从模型到训练再到测试&#xff1a;开源项目 开源项目完整代码及基础教程&#xff1a; https://mbd.pub/o/bread/ZZWclp5x CNN模型&#xff1a; 1.导入必要的库和模块&…

大模型时代的人工智能+大数据平台,加速创新涌现

大模型和MaaS概念的出现&#xff0c;定义了以模型为中心的一整套AI开发新范式&#xff0c;而这背后日益增长的巨大算力需求&#xff0c;对AI工程底座提出了新的挑战。今天&#xff0c;大模型时代下的人工智能大数据平台&#xff0c;需要具备计算效率、开发效率、处理效率为一体…

Java日志组件介绍之二

一、前言 Java日志组件介绍之一 主要介绍了JDK内置日志和Apache的common-logging通用日志接口&#xff0c;今天这篇我们继续了解Java其它一些日志组件。 二、slf4j slf4j即Simple Logging Facade for JAVA &#xff0c;简单日志门面&#xff0c;类似common-logging&#xff0…

RBAC:基于角色的访问控制

1.介绍 RBAC是一种库表设计思想 基于角色的访问控制&#xff08;RBAC&#xff09;是实施面向企业安全策略的一种有效的访问控制方式。一种数据库的设计思想&#xff0c;其核心是角色。其基本思想是&#xff0c;对系统操作的各种权限不是直接授予具体的用户&#xff0c;而是在…

element表格自定义筛选

文章目录 前言一、简介二、效果展示三、源码总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; …待续 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…

视频汇聚平台EasyCVR分发的流如何进行token鉴权?具体步骤是什么?

视频监控EasyCVR平台能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能支持视…

喜报!CACTER邮件安全网关荣获2023鲲鹏应用创新大赛广东赛区三等奖

近期&#xff0c;2023鲲鹏应用创新大赛广东赛区暨广东省信息技术应用创新产业联盟创新大赛圆满落幕&#xff0c;Coremail凭借“基于鲲鹏CPU的邮件网关一体机解决方案”&#xff0c;荣获“金融行业方向”三等奖。 ​ 鲲鹏凌粤 展翅湾区 本届大赛广东区域赛以“鲲鹏凌粤 展翅湾…

数据结构与算法-树和森林

&#x1f31e; “永远面朝阳光&#xff0c;阴影被甩在身后&#xff01;” 树和森林 &#x1f388;1.线索二叉树&#x1f388;2.树和森林&#x1f52d;2.1树的存储结构&#x1f52d;2.2双亲表示法&#x1f52d;2.3孩子链表表示法&#x1f4dd;2.3.1孩子链表表示法的实现&#x1…

基于深度学习网络的美食检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 % 图像大小 image_size [224 224 3]; num_classes size(VD,2)-1;% 目标类别数量…

解决:Xshell连接服务器卡在To escape to local shell, press ‘Ctrl+Alt+]‘.很久才能够连接上

如下图&#xff1a;在输入服务器的账号密码后&#xff0c;会卡在这里没有任何反映需要几分钟才能连接上 造成这个情况的原因&#xff1a; 在SSH服务中&#xff0c;UseDNS用于指定当用户SSH登录一个域名时&#xff0c;服务器是否使用DNS来确认该域名对应的IP地址。如果UseDNS设置…

【约会云栖】从初中至大学,我见证了科技变革的历程。

前言 提起阿里云开发者大会&#xff0c; 你一定会觉得陌生&#xff1b;但提起云栖大会&#xff0c;你又会耳熟能详。实际上&#xff0c;云栖大会的前身就是阿里云开发者大会&#xff0c;2015年&#xff0c;它永久落户在杭州市西湖区云栖小镇。 2023年10月31日至11月2日&#xf…

echarts 饼图中心添加图片

需求 问题 - 暂时无法解决&#xff08;如果图标居中不存在该问题&#xff09; 由于此处饼图位置不处于当前 echarts 图表容器的中心位置&#xff0c;而是偏左一点&#xff0c;我们需要设置&#xff1a; 中心图片所在靠左位置【见 - 主要代码1】官方手册 https://echarts.apache…

记一次 logback 没有生成独立日志文件问题

背景 在新项目发布后发现日志文件并没有按照期望的方式独立开来&#xff0c;而是都写在了 application.log 文件中。 问题展示 日志文件&#xff1a; 项目引入展示&#xff1a; <include resource"paas/sendinfo/switch/client/sendinfo-paas-switch-client-log.…

全面解析C++ std::move

全面解析C std::move 本篇文章首发知识星球&#xff0c;感兴趣的可以点击下方加入即可。 std::move 是一个非常重要的函数&#xff0c;它提供了一种方式&#xff0c;可以将一个左值对象标记为一个特殊类型的右值对象&#xff0c;即 xvalue。这种转变是为了允许执行移动语义&…

通过wordpress能搭建有影响力的帮助中心

wordpress建站服务是一种提供简单易用的工具和功能&#xff0c;帮助用户轻松创建和管理网站的服务。它适用于各类网站管理员、个人博主和小型企业主&#xff0c;无论是想要搭建个人博客、展示作品集还是开设在线商店&#xff0c;都可以通过wordpress建站服务来实现。 | 一、搭建…