爬取第一试卷网高三数学试卷并下载到本地

import requests
import re
import os
filename = '试卷\\'
if not os.path.exists(filename):os.mkdir(filename)
url = 'https://www.shijuan1.com/a/sjsxg3/list_727_1.html'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url=url,headers=headers)
response.encoding = response.apparent_encoding
href_list = re.findall("<td width='52%' height='23'><a href=\"(.*?)\" class=\"title\" target='_blank'>",response.text)
title_list = re.findall("class=\"title\" target='_blank'>(.*?)</a>",response.text)
# https://www.shijuan1.com/a/sjywg3/243565.html
for title,href in zip(title_list,href_list):href = 'https://www.shijuan1.com'+hrefdata_html = requests.get(url=href,headers=headers)data_html.encoding = data_html.apparent_encodingdata_url = 'https://www.shijuan1.com'+re.findall('<li><a href="(.*?)" target="_blank">本地下载</a></li>',data_html.text)[0]doc = requests.get(url=data_url,headers=headers).contentwith open('试卷\\'+title+'.rar',mode='wb') as f:f.write(doc)

结果展现:

改进代码:

import requests
import os
import redef get_html_data(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}response = requests.get(url=url,headers=headers)response.encoding = response.apparent_encodingreturn responsedef get_analyse_html(response):href_list = re.findall("<td width='52%' height='23'><a href=\"(.*?)\" class=\"title\" target='_blank'>",response.text)title_list = re.findall("class=\"title\" target='_blank'>(.*?)</a>", response.text)return title_list,href_listdef save(title_list,doc_list):filename = '试卷\\'if not os.path.exists(filename):os.mkdir(filename)for title,doc in zip(title_list,doc_list):with open('试卷\\' + title + '.rar', mode='wb') as f:f.write(doc)print(f'{title}已经下载完成')def get_doc(href_list):doc_list = []for href in  href_list:href = 'https://www.shijuan1.com' + hrefdoc_html = get_html_data(href)data_url = 'https://www.shijuan1.com' + re.findall('<li><a href="(.*?)" target="_blank">本地下载</a></li>', doc_html.text)[0]doc = get_html_data(data_url).contentdoc_list.append(doc)return doc_listif __name__ == '__main__':url = 'https://www.shijuan1.com/a/sjsxg3/list_727_1.html'response = get_html_data(url)title_list,href_list = get_analyse_html(response)doc_list = get_doc(href_list)save(title_list,doc_list)

进一步写成类:

import requests
import os
import re
class save_doc():def get_html_data(self,href):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}response = requests.get(url=href, headers=headers)response.encoding = response.apparent_encodingreturn responsedef get_analyse_html(self,response):href_list = re.findall("<td width='52%' height='23'><a href=\"(.*?)\" class=\"title\" target='_blank'>",response.text)title_list = re.findall("class=\"title\" target='_blank'>(.*?)</a>", response.text)return title_list, href_listdef save(self,title_list,doc_list):filename = '试卷\\'if not os.path.exists(filename):os.mkdir(filename)for title, doc in zip(title_list, doc_list):with open('试卷\\' + title + '.rar', mode='wb') as f:f.write(doc)print(f'{title}已经下载完成')def get_doc(self,href_list):doc_list = []for href in href_list:href = 'https://www.shijuan1.com' + hrefdoc_html = self.get_html_data(href)data_url = 'https://www.shijuan1.com' + re.findall('<li><a href="(.*?)" target="_blank">本地下载</a></li>', doc_html.text)[0]doc = self.get_html_data(data_url).contentdoc_list.append(doc)return doc_list
save = save_doc()
response = save.get_html_data('https://www.shijuan1.com/a/sjsxg3/list_727_1.html')
title_list,href_list = save.get_analyse_html(response)
doc_list = save.get_doc(href_list)
save.save(title_list,doc_list)

对于类还是很不熟,我想要类中的方法返回的值,可以直接传入类中的其他方法,应该怎么写呢?我想要写一个类,传入一个url,直接下载所需要的数据,即最终代码为

save = save_doc("https://www.shijuan1.com/a/sjsxg3/list_727_1.html")

不需要上面那么复杂的传来传去,应该怎么做呢? 

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

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

相关文章

第二百八十七回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容&#xff0c;本章回中将介绍如何播放视频.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

DDOS攻击有哪几种类型

DDOS攻击“分布式拒绝服务”是目前网站服务器所常见的恶意攻击&#xff0c;其原理是通过控制大量肉鸡(虚假流量)访问网站服务器消耗带宽、内存等资源&#xff0c;其目的是使得网站服务器无法正常的访问&#xff0c;其后果是直接导致企业业务受损&#xff0c;数据丢失&#xff0…

Android开发修炼之路——(一)Android App开发基础-3

本专栏文章&#xff1a; Android开发修炼之路——&#xff08;一&#xff09;Android App开发基础-1 Android开发修炼之路——&#xff08;一&#xff09;Android App开发基础-2 3 App的设计规范 本节介绍了App工程的源码设计规范&#xff0c;首先App将看得见的界面设计与看不…

开发 Chrome 浏览器插件时进行 Vue3+Vite 多页面多入口配置

使用 Vite 开发 Chrome 插件时&#xff0c;构建多页面以及多 js 文件 因为发现 Vite 多页面构建有很多分歧以及问题点&#xff0c;所以我把我在 Chrome 插件开发上面使用到的 Vite 多页面以及多入口文件构建配置单独拿出来 开发 Chrome 插件是&#xff0c;一般会需要一个 popup…

eNSP学习——交换机基础

目录 原理概述 实验目的 实验步骤 实验内容 实验拓扑 实验步骤 基础配置 配置交换机双工模式 配置接口速率 思考题 原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数&#xff0c;比如速率、双工模式等。   接口速率&#xff1a;指的是交换机接口每秒钟传…

Leetcode HOT 100 - 2. 两数相加(Java + 链表)

文章目录 题目思路Java 链表第 1 步&#xff1a;第 2 步&#xff1a; 复杂度Code 题目 Problem: 2. 两数相加给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。请你将两个数相加&am…

【Go 快速入门】安装 Go 语言 | 开发工具 Goland | 第一个 Go 语言程序

文章目录 前言安装 Go 语言编译器 Goland运行 Go 程序补充 前言 本系列教程&#xff0c;目的是帮助一个有其他编程基础的 Go 语言小白快速入门 Go 语言&#xff0c;而非启发式学习。每篇幅保证不说废话&#xff0c;尽可能精炼总结&#xff0c;为上手后续的 Go 相关项目打下基础…

基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)

一、项目介绍 随着科技的不断发展和人们生活水平的提高&#xff0c;农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一&#xff0c;其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制&#xff0c;不仅效率低下&#xff0c;而…

mmdetecion

安装和测试&#xff1a; GET STARTED — MMDetection 3.3.0 documentation mmdetection从配置到训练_openmim-CSDN博客 训练voc数据集&#xff1a; mmdetection训练自己的VOC数据集及常见问题_mmdetection训练voc数据集-CSDN博客 训练自己的COCO数据集及常见问题见下文&…

搜索与图论第五期 拓扑序列

前言 拓扑排序是非常重要的一部分&#xff0c;希望大家都能够手撕代码&#xff01;&#xff01;&#xff01;&#xff08;嘿嘿嘿&#xff09; 一、拓扑排序定义&#xff08;百度须知嘿嘿嘿&#xff09; 拓扑排序 拓扑排序是一种对有向无环图&#xff08;Directed Acyclic Gra…

flink学习之窗口处理函数

窗口处理函数 什么是窗口处理函数 Flink 本身提供了多层 API&#xff0c;DataStream API 只是中间的一环&#xff0c;在更底层&#xff0c;我们可以不定义任何具体的算子&#xff08;比如 map()&#xff0c;filter()&#xff0c;或者 window()&#xff09;&#xff0c;而只是…

Java事务的传播

Java事务的传播详解 欢迎来到本博客&#xff0c;今天我们将深入探讨Java中事务传播行为&#xff0c;这是在处理多个事务边界时至关重要的一环。 1. 事务传播概述 在Java中&#xff0c;事务是一系列操作的执行单元&#xff0c;要么全部执行成功&#xff0c;要么全部回滚。事务…

GitHub Copilot 与 ChatGPT:哪种工具更适合软件开发?

GitHub Copilot 与 ChatGPT&#xff1a;哪种工具更适合软件开发&#xff1f; 比较 ChatGPT 与 GitHub Copilot编程语言功能性定制化训练数据上下文准确性 ChatGPT 与 GitHub Copilot&#xff1a;哪个更适合软件开发&#xff1f;常见问题解答&#xff1a; 不断发展的编程世界正在…

深入理解stress/stress-ng

文章目录 一、概述二、安装2.1、源码编译安装2.2、命令行安装2.3、安装确认 三、重要参数详解3.1、查询支持的参数3.2、重要参数说明 四、实例4.1、压测CPU4.2、压测内存4.3、压测IO4.4、压测磁盘及IO4.5、压测磁盘及CPU 团队博客: 汽车电子社区 一、概述 stress是一种工作负载…

电子行业含砷废水,深度除砷技术

砷是一种类金属元素&#xff0c;砷化物生物毒性极强&#xff0c;是国际公认的第一类致癌物。因此&#xff0c;这些含砷废水必须经过一定的处理才能排放到环境中。那么&#xff0c;哪些行业会产生含砷废水呢?在地球上&#xff0c;砷是一种常见的元素。在自然界中&#xff0c;砷…

2023年CSDN年底总结-独立开源创作者第一年

2023年最大的变化&#xff0c;就是出来创业&#xff0c;当独立开源创作者&#xff0c;这一年发起SolidUI开源项目&#xff0c;把知乎重新开始运营起来。CSDN粉丝破万&#xff0c;CSDN博客专家和AI领域创作者。 2023年年度关键词&#xff1a;创业 https://github.com/CloudOrc…

SpringBoot责任链与自定义注解:优雅解耦复杂业务

引言 责任链模式是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行传递&#xff0c;直到有一个处理者处理请求。在实际应用中&#xff0c;责任链模式常用于解耦发送者和接收者&#xff0c;使得请求可以按照一定的规则被多个处理者依次处理。 首先&#xff0c;本…

如何区分 html 和 html5?

HTML&#xff08;超文本标记语言&#xff09;和HTML5在很多方面都存在显著的区别。HTML5是HTML的最新版本&#xff0c;引入了许多新的特性和元素&#xff0c;以支持更丰富的网页内容和更复杂的交互。以下是一些区分HTML和HTML5的关键点&#xff1a; 新特性与元素&#xff1a;H…

zabbix 安装和启动报错处理

zabbix 安装报错处理 yum安装agent或者proxy报错解决办法&#xff0c;yum源取消检查配置 对已经安装好的zabbix 报错解决办法 yum安装agent或者proxy报错 配置官方源 rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpmyum安装报…

搭建k8s集群实战(三)安装配置containerd、kubelet、kubeadm、kubectl

k8s在1.24之后,使用containerd代码docker提供容器服务。 下面说明如果安装containerd,并设置镜像仓库。 添加源 yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装containerd 由于CentOS 8 默…