吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4353|回复: 93
上一主题 下一主题
收起左侧

[Python 原创] 第一试卷下载(链接已更新)

[复制链接]
跳转到指定楼层
楼主
暗无天日 发表于 2024-6-13 11:00 回帖奖励
[ 本帖最后由 暗无天日 于 2024-7-31 15:33 编辑 ]\n\n[ 本帖最后由 暗无天日 于 2024-6-25 15:02 编辑 ]\n\n前几天在论坛上看到一篇关于【第一试卷网】下载的帖子,感到没有达到自己想要的功能,于是就尝试着自己写了一版。在这一版里可以选择【科目】【年级】以及下载的【版本】,这样可以有更多的选择。现在奉上,其中难免有不尽人意的地方,请群里高手给与指正!非常感谢各位朋友的建议和提出的问题,今天对程序重新运行发现是有问题,于是连忙进行改版,请朋友再提宝贵意见!①科目可以输入:"语文试卷","数学试卷","英语试卷","物理试卷","化学试卷","政治试卷","历史试卷","地理试卷","生物试卷"。(输入时省略双引号,下同)
②年级可以输入:"一年级"、"二年级"、……"九年级"、"中考试卷"、……"高考试卷"等。(具体科目对应的年级,程序运行成功会有提示的)
③版本可以输入:“人教版”。(推测可能由“苏教版”等等,具体可以登录“第一试卷网”查看后,根据实际需要填写)
④路径为保存下载文件的文件夹(可以新建)如输入:C:\Users\WCQTJJLXQ\Desktop\语文试卷


[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup
def open_test(url,header):      #打开网页
    html = requests.get(url,headers=header)
    html.encoding= "gb2312"
    soup = BeautifulSoup(html.text,"html.parser")
    return soup
def down_test(url,header):       #展示试卷列表
    #试卷列表
    test_list = soup.find("ul", class_="c1")
    test_tr = test_list.find_all("tr")
    for tr in test_tr:
        if verson in tr.text:
            test_td = tr.find("a").get("href")
            ur = test_td.split("/")[-1]
            name = tr.find("a").string              #试卷的文件名
            test_ur = url+"/"+ur       #试卷下载网址
            print("试卷网址:",test_ur)
            test = requests.get(test_ur,headers=header)
            test.encoding="gb2312"
            test_soup = BeautifulSoup(test.text,"html.parser")
            test_html = test_soup.find("ul",class_="downurllist")
            test_u= test_html.find("a").get("href")
            test_down = requests.get(u+test_u,headers=header)
            with open(path+"\\"+name+".rar","wb") as f:
                f.write(test_down.content)

if __name__ == '__main__':
    print(
        "数据来源:第一试卷网(www.shijuan1.com)  仅支持个人研究和学习,商用请联系官方授权.\n")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!\n")
    sb = ["语文试卷","数学试卷","英语试卷","物理试卷","化学试卷","政治试卷","历史试卷","地理试卷","生物试卷"]
    gd = "一年级  二年级  三年级  四年级  五年级  六年级  七年级  八年级  九年级  中考试卷  高一  高二  高三  高考试卷"
    for i in sb:
        if i =="语文试卷" or i =="数学试卷" or i =="英语试卷":
            print(f'{i}:{"  "}{gd}')
        elif i =="物理试卷" :
            print(f'{i}:{"  "}{gd[35:]}')
        elif  i=="化学试卷":
            print(f'{i}:{"  "}{gd[40:]}')
        elif i =="政治试卷" or i =="历史试卷":
            print(f'{i}:{"  "}{gd[30:]}')
        else:
            print(f'{i}:{"  "}{gd[30:38]}{gd[42:]}')
    u = "https://www.shijuan1.com/"
    header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"}
    subject = {
        "语文试卷":'/a/sjyw',"数学试卷":'/a/sjsx',"英语试卷":'/a/sjyy',"物理试卷":'/a/sjwl',"化学试卷":'/a/sjhx',
       "政治试卷":'/a/sjzz',"历史试卷":'/a/sjls',"地理试卷":'/a/sjdl',"生物试卷":'/a/sjsw'
    }
    grade = {
        "一年级":"1","二年级":"2","三年级":"3","四年级":"4","五年级":"5","六年级":"6","七年级":"7","八年级":"8","九年级":"9",
        "中考试卷":"zk","高一":"g1","高二":"g2","高三":"g3","高考试卷":"gk"
    }
    s = input("请输入科目名称:")
    g = input("请输入年级:")
    url = u + subject[s] + grade[g]
    verson=input("请输入版本信息:")
    path = input("请输入要保存文件的路径:")
    html = requests.get(url, headers=header)
    html.encoding = "gb2312"
    soup = BeautifulSoup(html.text, "html.parser")
    page = soup.find("ul", class_="pagelist")
    count = page.find("strong").string    try:
      page_ul = page.find("a").get("href").rsplit("_", 1)[0]
    except:
      count
    for i in range(1, int(count) + 1):
        if i == 1:
            down_test(url, header)
        else:
            page_url = url + "/" + page_ul + "_" + str(i) + ".html"
            soup=open_test(page_url, header)
            down_test(url, header)


根据网友要求,对程序进行打包,可以一试,有问题请及时反馈!

微信截图_20240613105345.jpg (38.05 KB, 下载次数: 11)

微信截图_20240613105345.jpg

第一试卷网下载.txt

141 Bytes, 下载次数: 301, 下载积分: 吾爱币 -1 CB

已更新

免费评分

参与人数 16吾爱币 +17 热心值 +12 收起 理由
a442985494 + 1 + 1 运行正常 谢谢
naonao211 + 1 + 1 谢谢@Thanks!
zgruby + 1 + 1 我很赞同!
lotus4100 + 1 + 1 用心讨论,共获提升!
13504490678 + 1 + 1 谢谢@Thanks!
dhark + 1 谢谢@Thanks!
chenmi2017 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
mankou + 1 + 1 谢谢@Thanks!
hay1229 + 1 我很赞同!成品过期,求再发一下
科迈罗 + 1 + 1 用心讨论,共获提升!
Bugott + 1 我很赞同!
安道尔的鱼 + 1 + 1 我很赞同!
huiker231 + 1 + 1 感谢分享
Tzl198 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
vethenc + 2 + 1 谢佬
fcml45 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
zhouzhiwei90 发表于 2024-6-14 10:47
本帖最后由 zhouzhiwei90 于 2024-6-14 10:52 编辑

我来给大佬更新一波代码
import requests
from bs4 import BeautifulSoup

def page_count(url):
    html = requests.get(url)
    html.encoding = "gb2312"
    soup = BeautifulSoup(html.text, "html.parser")
    page = soup.find("ul", class_="pagelist")
    count = page.find("strong").string
    page_ul = page.find("a").get("href").rsplit("_", 1)[0]
    if int(count) == 1:
        down_test(url)
    else:
        for j in range(1, int(count) + 1):
            page_url = url + "/" + page_ul + "_" + str(j) + ".html"
            down_test(page_url)

def down_test(url):
    html = requests.get(url)
    html.encoding = "gb2312"
    soup = BeautifulSoup(html.text, "html.parser")
    test_list = soup.find("ul", class_="c1")
    test_tr = test_list.find_all("tr")
    for tr in test_tr:
        if verson in tr.text:
            test_td = tr.find("a").get("href")
            name = tr.find("a").string  # 试卷的文件名
            test_url = u + test_td  # 构造试卷网址
            testpage = requests.get(test_url)
            testpage_soup = BeautifulSoup(testpage.text, "html.parser")
            downurllist = testpage_soup.find("ul", class_="downurllist")
            downurl = downurllist.find("a").get("href")  # 从试卷网址获取文件下载地址
            test = requests.get(u + downurl)  # 构造完整的地址并下载
            test.encoding = "gb2312"
            with open(path + "\\" + name + ".rar", "wb") as f:
                f.write(test.content)

if __name__ == '__main__':
    print(
        "数据来源:第一试卷网(www.shijuan1.com)  仅支持个人研究和学习,商用请联系官方授权.\n")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!\n")
    sb = ["语文试卷", "数学试卷", "英语试卷", "物理试卷", "化学试卷", "政治试卷", "历史试卷", "地理试卷", "生物试卷"]
    gd = "一年级  二年级  三年级  四年级  五年级  六年级  七年级  八年级  九年级  中考试卷  高一  高二  高三  高考试卷"
    for i in sb:
        if i == "语文试卷" or i == "数学试卷" or i == "英语试卷":
            print(f'{i}:{"  "}{gd}')
        elif i == "物理试卷":
            print(f'{i}:{"  "}{gd[35:]}')
        elif i == "化学试卷":
            print(f'{i}:{"  "}{gd[40:]}')
        elif i == "政治试卷" or i == "历史试卷":
            print(f'{i}:{"  "}{gd[30:]}')
        else:
            print(f'{i}:{"  "}{gd[30:38]}{gd[42:]}')
    u = "https://www.shijuan1.com"
    subject = {
        "语文试卷": '/a/sjyw', "数学试卷": '/a/sjsx', "英语试卷": '/a/sjyy', "物理试卷": '/a/sjwl',
        "化学试卷": '/a/sjhx',
        "政治试卷": '/a/sjzz', "历史试卷": '/a/sjls', "地理试卷": '/a/sjdl', "生物试卷": '/a/sjsw'
    }
    grade = {
        "一年级": "1", "二年级": "2", "三年级": "3", "四年级": "4", "五年级": "5", "六年级": "6", "七年级": "7",
        "八年级": "8", "九年级": "9",
        "中考试卷": "zk", "高一": "g1", "高二": "g2", "高三": "g3", "高考试卷": "gk"
    }
    s = input("请输入科目名称:")
    g = input("请输入年级:")
    urlDownload = u + subject[s] + grade[g]
    verson = input("请输入版本信息:")
    path = input("请输入要保存文件的路径:")
    page_count(urlDownload)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
aabbcc123123 + 1 + 1 谢谢@Thanks!

查看全部评分

推荐
vethenc 发表于 2024-6-13 13:17
接着,补充几点使用说明。帮助大家更好的使用这个神器!目前孩子们都在复习阶段了,正好用上这个!

1.运行不成功,提示错误。
原因:缺少第三方库的支持。
解决办法:在cmd库中安装本程序需要的2个库,一个是request,一个是bs4。
不会安装python第三方库的,请百度。
举例:pip install request。

2.软件成功运行。提示输入内容阶段出错。
原因:本软件一共需要提供(输入)4个选项。分别是:科目、年级、版本信息和保存路径。
解决办法:
①科目可以输入:"语文试卷","数学试卷","英语试卷","物理试卷","化学试卷","政治试卷","历史试卷","地理试卷","生物试卷"。(输入时省略双引号,下同)
②年级可以输入:"一年级"、"二年级"、……"九年级"、"中考试卷"、……"高考试卷"等。(具体科目对应的年级,程序运行成功会有提示的)
③版本可以输入:“人教版”。(推测可能由“苏教版”等等,具体可以登录“第一试卷网”查看后,根据实际需要填写)
④路径可以输入:“./”。(保存路径为当前py程序主目录。需要建文件夹的,可以根据需要拓展)
沙发
天天涨停天天盈 发表于 2024-6-13 12:01
大佬,有没有成品可以用呢,都是代码小白不会用
3#
gotofei 发表于 2024-6-13 12:35
py运行出错了
4#
vethenc 发表于 2024-6-13 13:04
本帖最后由 vethenc 于 2024-6-14 21:55 编辑

经测试,完全没问题。运行正常,下载正常,北京明白!
首先帮大佬排个版。

import requests
from bs4 import BeautifulSoup
def open_test(url,header):      #打开网页
    html = requests.get(url,headers=header)
    html.encoding= "gb2312"
    soup = BeautifulSoup(html.text,"html.parser")
    return soup
def down_test(url,header):       #展示试卷列表
    #试卷列表
    test_list = soup.find("ul", class_="c1")
    test_tr = test_list.find_all("tr")
    for tr in test_tr:
        if verson in tr.text:
            test_td = tr.find("a").get("href")
            ur = test_td.split("/")[-1]
            name = tr.find("a").string              #试卷的文件名
            test_ur = url+"/"+ur       #试卷下载网址
            print("试卷网址:",test_ur)
            test = requests.get(test_ur,headers=header)
            test.encoding="gb2312"
            test_soup = BeautifulSoup(test.text,"html.parser")
            test_html = test_soup.find("ul",class_="downurllist")
            test_u= test_html.find("a").get("href")
            test_down = requests.get(u+test_u,headers=header)
            with open(path+"\\"+name+".rar","wb") as f:
                f.write(test_down.content)

if __name__ == '__main__':
    print(
        "数据来源:第一试卷网(www.shijuan1.com)  仅支持个人研究和学习,商用请联系官方授权.\n")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!")
    print("声明:本代码仅供学习研究使用,请勿用于商业用途,否则后果自负!\n")
    sb = ["语文试卷","数学试卷","英语试卷","物理试卷","化学试卷","政治试卷","历史试卷","地理试卷","生物试卷"]
    gd = "一年级  二年级  三年级  四年级  五年级  六年级  七年级  八年级  九年级  中考试卷  高一  高二  高三  高考试卷"
    for i in sb:
        if i =="语文试卷" or i =="数学试卷" or i =="英语试卷":
            print(f'{i}:{"  "}{gd}')
        elif i =="物理试卷" :
            print(f'{i}:{"  "}{gd[35:]}')
        elif  i=="化学试卷":
            print(f'{i}:{"  "}{gd[40:]}')
        elif i =="政治试卷" or i =="历史试卷":
            print(f'{i}:{"  "}{gd[30:]}')
        else:
            print(f'{i}:{"  "}{gd[30:38]}{gd[42:]}')
    u = "https://www.shijuan1.com/"
    header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"}
    subject = {
        "语文试卷":'/a/sjyw',"数学试卷":'/a/sjsx',"英语试卷":'/a/sjyy',"物理试卷":'/a/sjwl',"化学试卷":'/a/sjhx',
       "政治试卷":'/a/sjzz',"历史试卷":'/a/sjls',"地理试卷":'/a/sjdl',"生物试卷":'/a/sjsw'
    }
    grade = {
        "一年级":"1","二年级":"2","三年级":"3","四年级":"4","五年级":"5","六年级":"6","七年级":"7","八年级":"8","九年级":"9",
        "中考试卷":"zk","高一":"g1","高二":"g2","高三":"g3","高考试卷":"gk"
    }
    s = input("请输入科目名称:")
    g = input("请输入年级:")
    url = u + subject[s] + grade[g]
    verson=input("请输入版本信息:")
    path = input("请输入要保存文件的路径:")
    html = requests.get(url, headers=header)
    html.encoding = "gb2312"
    soup = BeautifulSoup(html.text, "html.parser")
    page = soup.find("ul", class_="pagelist")
    count = page.find("strong").string
    page_ul = page.find("a").get("href").rsplit("_", 1)[0]
    for i in range(1, int(count) + 1):
        if i == 1:
            down_test(url, header)
        else:
            page_url = url + "/" + page_ul + "_" + str(i) + ".html"
            soup=open_test(page_url, header)
            down_test(url, header)[s]
5#
first 发表于 2024-6-13 13:11
下载后提示压缩文件已损坏
6#
mebyan 发表于 2024-6-13 13:17
下载后提示压缩文件已损坏+1
此外,程序中,pagelist、test_html没有用到,"请输入版本信息:"在程序中好象没有体现,随便输了一个“1”
7#
life9999 发表于 2024-6-13 13:17
工具软件不错,下来试试
9#
vethenc 发表于 2024-6-13 13:19
本帖最后由 vethenc 于 2024-6-13 13:23 编辑

最后,我也遇到6楼的问题了。下载的文件大小全部是3KB,解压提示文件损坏。还请楼主出来解答一下。@暗无天日

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
Yesits7 + 1 + 1 谢谢@Thanks!
Yifan2007 + 1 热心回复!

查看全部评分

10#
jiangtaixiaozhu 发表于 2024-6-13 13:30
这是个好东西
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表