白嫖怪小案例———用爬虫实现csdn免费下载资源搜寻

前言

众所周知,在csdn下载资源有很多都是要收费的,最常见的是要积分的

但是小编囊中羞涩,买不起VIP,也没有积分,而资源又要一个一个点进去才知道是不是免费的(最爱0积分了,老白嫖怪了),很烦

 就花了一天做了个爬虫小代码来解决问题(一天?俺是菜鸟,本来也没咋练过)

顺便重温了爬虫和正则表达式,过程对本菜鸟来说挺痛苦的,估计也没人想知道,就直接放最终结果了

分步代码

导入模块

# -*- coding: utf-8 -*-
import requests
import re

数据爬取

    url = f'https://so.csdn.net/api/v3/search?q={key}&t=doc&p=1&s=0&tm=0&lv=-1&ft=0&l=&u=&ct=-1&pnt=-1&ry=-1&ss=-1&dct=-1&vco=-1&cc=-1&sc=-1&akt=-1&art=-1&ca=-1&prs=&pre=&ecc=-1&ebc=-1&platform=wap'# 定义 HTTP 请求头部信息,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36 Edg/115.0.1901.203',}# 发送 HTTP GET 请求,并获取响应数据response = str(requests.get(url, headers=headers).json())

数据处理

    originfile = re.findall("'originfile': '(.*?)'", response)sourcescore = re.findall("'sourcescore': '(.*?)'", response)digest = re.findall("'digest': '(.*?)'", response)url = re.findall("'url': '(.*?)'", response)author = re.findall("'author': '(.*?)'", response)lenth = min([len(sourcescore), len(originfile), len(author), len(digest), len(url)])if lenth:dicts = {i: [sourcescore[i], originfile[i], author[i], digest[i], url[i]] for i in range(lenth)}else:print("没有找到您所要的数据")return 0

打印输出

    b = ["所需积分:", "文件:", "上传者:", "简介:", "下载地址:"]for i in dicts.values():if int(i[0]) <= value:for flag in range(5):print(b[flag] + i[flag])print("\n")

闭包封装

#  csdn积分资源搜寻器
def search(key: str, value: int):# 第一步,数据爬取url = f'https://so.csdn.net/api/v3/search?q={key}&t=doc&p=1&s=0&tm=0&lv=-1&ft=0&l=&u=&ct=-1&pnt=-1&ry=-1&ss=-1&dct=-1&vco=-1&cc=-1&sc=-1&akt=-1&art=-1&ca=-1&prs=&pre=&ecc=-1&ebc=-1&platform=wap'# 定义 HTTP 请求头部信息,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36 Edg/115.0.1901.203',}# 发送 HTTP GET 请求,并获取响应数据response = str(requests.get(url, headers=headers).json())# 第二部,数据处理originfile = re.findall("'originfile': '(.*?)'", response)sourcescore = re.findall("'sourcescore': '(.*?)'", response)digest = re.findall("'digest': '(.*?)'", response)url = re.findall("'url': '(.*?)'", response)author = re.findall("'author': '(.*?)'", response)lenth = min([len(sourcescore), len(originfile), len(author), len(digest), len(url)])if lenth:dicts = {i: [sourcescore[i], originfile[i], author[i], digest[i], url[i]] for i in range(lenth)}else:print("没有找到您所要的数据")return 0# 第三步,打印输出b = ["所需积分:", "文件:", "上传者:", "简介:", "下载地址:"]for i in dicts.values():if int(i[0]) <= value:for flag in range(5):print(b[flag] + i[flag])print("\n")

传参调用

if __name__ == '__main__':print("这里是csdn免费资源搜寻器")keys = input("请输入你想搜索的东西:")values = int(input("请输入你想限制的最大积分数:"))print("好的,请稍等片刻")search(keys, values)s = input("任务完成输入任意字符回车可关闭窗口")

此时,整个案例就算完成了,后面附加完整代码和打包成.exe文件的方法

完整代码

# -*- coding: utf-8 -*-
import requests
import re"""
由于csdn的付费资源也是0积分,俺是菜鸟,能力不足,无法筛选出去,请留意
"""#  csdn积分资源搜寻器
def search(key: str, value: int):# 第一步,数据爬取url = f'https://so.csdn.net/api/v3/search?q={key}&t=doc&p=1&s=0&tm=0&lv=-1&ft=0&l=&u=&ct=-1&pnt=-1&ry=-1&ss=-1&dct=-1&vco=-1&cc=-1&sc=-1&akt=-1&art=-1&ca=-1&prs=&pre=&ecc=-1&ebc=-1&platform=wap'# 定义 HTTP 请求头部信息,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36 Edg/115.0.1901.203',}# 发送 HTTP GET 请求,并获取响应数据response = str(requests.get(url, headers=headers).json())# 第二部,数据处理originfile = re.findall("'originfile': '(.*?)'", response)sourcescore = re.findall("'sourcescore': '(.*?)'", response)digest = re.findall("'digest': '(.*?)'", response)url = re.findall("'url': '(.*?)'", response)author = re.findall("'author': '(.*?)'", response)lenth = min([len(sourcescore), len(originfile), len(author), len(digest), len(url)])if lenth:dicts = {i: [sourcescore[i], originfile[i], author[i], digest[i], url[i]] for i in range(lenth)}else:print("没有找到您所要的数据")return 0# 第三步,打印输出b = ["所需积分:", "文件:", "上传者:", "简介:", "下载地址:"]for i in dicts.values():if int(i[0]) <= value:for flag in range(5):print(b[flag] + i[flag])print("\n")# 传参调用
if __name__ == '__main__':print("这里是csdn免费资源搜寻器")keys = input("请输入你想搜索的东西:")values = int(input("请输入你想限制的最大积分数:"))print("好的,请稍等片刻")search(keys, values)s = input("任务完成输入任意字符回车可关闭窗口")

打包使用

pycharm安装打包工具

打开终端输入运行命令

pip install pyinstaller

 打包成.exe文件

pyinstaller -F -i image.ico -n name main.py

图标最好用.ico格式,(虽然我的png好像也成功了),图标要换成自己的图片路径,name换成自己想要的名字,main.py 是你要打包的文件,没弹窗有输出的别写-w

参数说明 
  • -F 或 --onefile:默认为禁用,即生成一个文件夹而不是单个可执行文件。
  • -D 或 --onedir:默认为启用,即生成一个包含可执行文件和相关文件的文件夹。
  • -n <name> 或 --name=<name>:默认为输入文件的基本名称。
  • -w 或 --windowed:默认为禁用,即生成一个没有带控制台窗口的控制台程序。
  • -c 或 --console:默认为启用,即生成一个有控制台窗口的窗口化程序。
  • -i <icon> 或 --icon=<icon>:默认为无,默认情况下没有指定图标文件。
  • -a <dir> 或 --add-data <dir>:默认为无,默认情况下不添加任何文件或目录。
  • -b 或 --debug:默认为禁用,即生成一个不带调试信息的可执行文件。
  • -p <path> 或 --path=<path>:默认为系统默认的模块搜索路径。
  • -y 或 --noconfirm:默认为禁用,即在运行过程中会询问问题。
 注意
  • -w 参数禁用控制台窗口,生成的程序将不会显示命令行窗口。这在需要一个无窗口的GUI应用程序时非常有用。

  • -c 参数生成一个带有控制台窗口的控制台程序,即生成的程序将在命令行窗口中运行,并可以查看程序的输出和错误信息。

默认情况下,PyInstaller会生成一个带有控制台窗口的控制台程序,因此-c 参数默认启用,而 -w 参数默认禁用。

 

 成功后生成build,dist,spec,东西在dist里,其他不重要,可删。

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

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

相关文章

Java【数据结构】二分查找

&#x1f31e; 题目&#xff1a; &#x1f30f;在有序数组A中&#xff0c;查找目标值target &#x1f30f;如果找到返回索引 &#x1f30f;如果找不到返回-1 算法描述解释前提给定一个内含n个元素的有序数组A&#xff0c;满足A0<A1<A2<<An-1,一个待查值target1设…

科技项目验收检测报告获取有哪些注意事项,作用都有哪些?

验收测试报告 软件从研发到结束是一个很长的周期&#xff0c;对于软件想要完成上市或者是交付到用户手中之前我们还需要进行一次全面检测&#xff0c;也就是科技项目验收测试&#xff0c;此测试有着严格的要求&#xff0c;需要第三方软件测评机构来完成&#xff0c;并出具科技…

恒运资本:CPO概念发力走高,兆龙互联涨超10%,华是科技再创新高

CPO概念15日盘中发力走高&#xff0c;截至发稿&#xff0c;华是科技涨超15%再创新高&#xff0c;兆龙互联涨逾11%&#xff0c;中贝通讯涨停&#xff0c;永鼎股份、太辰光涨超5%&#xff0c;天孚通讯涨逾4%。 消息面上&#xff0c;光通讯闻名咨询机构LightCounting近日发布的202…

opencv-yolov8-目标检测

import cv2 from ultralytics import YOLO# 模型加载权重model YOLO(yolov8n.pt)# 视频路径cap cv2.VideoCapture(0)# 对视频中检测到目标画框标出来 while cap.isOpened():# Read a frame from the videosuccess, frame cap.read()if success:# Run YOLOv8 inference on th…

【Influxdb数据迁移,从windos移到linux】

前提——保证两边的版本不要相差太多 1、windows的导出G:\influxdb\2为暂存的目录 D:\influxdb-1.8.3_windows_amd64\influxdb-1.8.3-1>influxd backup -portable -database mydb G:\influxdb\2导出之后会有一堆文件 全部上传到/var/lib/influxdb这个目录下。这个应该是默…

网络综合布线实训室建设方案

一、网络综合布线系统概述 网络综合布线系统是为了满足数据通信需求而设计和建立的一套基础设施。它提供了数据传输、信号传输和电力供应的基础结构&#xff0c;支持各种网络设备和终端设备之间的连接。 网络综合布线系统通常包括以下组成部分&#xff1a; 1&#xff09; 数据…

快速上手PyCharm指南

PyCharm简介 PyCharm是一种Python IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、项目管理、代码跳转、智能提示、自动…

大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理实现代码逐行注释

从open AI 的论文可以看到&#xff0c;大语言模型的优化&#xff0c;分下面三个步骤&#xff0c;SFT&#xff0c;RM&#xff0c;PPO&#xff0c;我们跟随大神的步伐&#xff0c;来学习一下这三个步骤和代码实现&#xff0c;本章介绍PPO实践。 生活中&#xff0c;我们经常会遇到…

winform 封装unity web player 用户控件

环境&#xff1a; VS2015Unity 5.3.6f1 (64-bit) 目的&#xff1a; Unity官方提供的UnityWebPlayer控件在嵌入Winform时要求读取的.unity3d文件路径&#xff08;Src&#xff09;必须是绝对路径&#xff0c;如果移动代码到另一台电脑&#xff0c;需要重新修改src。于是考虑使…

阿里云100元预算可选的云服务器配置2核2G3M带宽

阿里云服务器100元可以买到哪些配置&#xff1f;如果是一年时长&#xff0c;轻量应用服务器2核2G3M带宽一年108元&#xff0c;系统盘为50GB高效云盘。以前阿里云服务器ECS卖过35元一年、69元、88元、89元和99元的都有过&#xff0c;但是现在整体费用上涨&#xff0c;入门级云服…

opencv直方图与模板匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 直方图 cv2.calcHist(images,channels,mask,histSize,ran…

【ES6】箭头函数和普通函数的区别

它们之间的区别&#xff1a; &#xff08;1&#xff09;箭头函数没有自己的this。 &#xff08;2&#xff09;不可以当作构造函数&#xff0c;不可以对箭头函数使用new命令&#xff0c;否则抛出错误。 &#xff08;3&#xff09;不可以使用arguments对象&#xff0c;该对象在函…

【深度学习】PyTorch快速入门

【深度学习】学习PyTorch基础 介绍PyTorch 深度学习框架是一种软件工具&#xff0c;旨在简化和加速构建、训练和部署深度学习模型的过程。深度学习框架提供了一系列的函数、类和工具&#xff0c;用于定义、优化和执行各种深度神经网络模型。这些框架帮助研究人员和开发人员专注…

华为PPPOE配置实验

华为PPPOE配置实验 网络拓扑图拓扑说明电信ISP设备配置用户拨号路由器配置查看是否拨上号是否看不懂&#xff1f; 看不懂就对了&#xff0c;只是记录一下命令。至于所有原理&#xff0c;等想写了再写 网络拓扑图 拓扑说明 用户路由器用于模拟家用拨号路由器&#xff0c;该设备…

R语言处理缺失数据(1)-mice

#清空 rm(listls()) gc()###生成模拟数据### #生成100个随机数 library(magrittr) set.seed(1) asd<-rnorm(100, mean 60, sd 10) %>% round #平均60&#xff0c;标准差10 #将10个数随机替换为NA NA_positions <- sample(1:100, 10) asd[NA_positions] <- NA #转…

CentOS下MySQL的彻底卸载的几种方法

这里我为大家详细讲解下“CentOS下MySQL的彻底卸载的几种方法”的完整攻略。 一、关闭MySQL服务 在开始操作之前&#xff0c;需要先关闭MySQL服务。可以使用以下命令来关闭MySQL服务&#xff1a; systemctl stop mysqld 或者 service mysqld stop 二、使用yum命令卸载MySQL…

Unity制作一个简单的登入注册页面

1.创建Canvas组件 首先我们创建一个Canvas画布&#xff0c;我们再在Canvas画布底下创建一个空物体&#xff0c;取名为Resgister。把空物体的锚点设置为全屏撑开。 2.我们在Resgister空物体底下创建一个Image组件&#xff0c;改名为bg。我们也把它 的锚点设置为全屏撑开状态。接…

Flutter 测试小结

Flutter 项目结构 pubspec.yaml 类似于 RN 的 package.json&#xff0c;该文件分别在最外层及 example 中有&#xff0c;更新该文件后&#xff0c;需要执行的 Pub get lib 目录下的 dart 文件为 Flutter 插件封装后的接口源码&#xff0c;方便在其他 dart 文件中调用 example 目…

卷积神经网络全解!CNN结构、训练与优化全维度介绍!

目录 一、引言1.1 背景和重要性1.2 卷积神经网络概述 二、卷积神经网络层介绍2.1 卷积操作卷积核与特征映射卷积核大小多通道卷积 步长与填充步长填充 空洞卷积&#xff08;Dilated Convolution&#xff09;分组卷积&#xff08;Grouped Convolution&#xff09; 2.2 激活函数R…

Wlan安全——认证与加密方式(WPA/WPA2)

目录 终端认证技术 WEP认证 PSK认证 802.1x认证与MAC认证 Portal认证 数据加密技术 WEP加密 TKIP加密 CCMP加密 TKIP和CCMP生成密钥所需要的密钥信息 802.11安全标准 WEP共享密钥认证、加密工作原理 WEP共享密钥认证 WEP加解密过程 PSK认证以及生成动态密钥的工…