吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6430|回复: 123
收起左侧

[Python 原创] Python爬虫,过节了(五一),给闲在家里的外甥弄点卷子做做

    [复制链接]
a525 发表于 2024-4-30 20:08
外甥在家闲置,不是打游戏就是看动漫。都快上五年级了,还不知道努力,将来还指望他给我端一碗饭吃呢!!!
所以,我今天给他买了个打印机,又花了点时间写个爬虫,弄了一批卷子,等后天打印机送到家,让他的五一充实起来。
废话少说,上代码!!!!!!!
[Python] 纯文本查看 复制代码
import concurrent.futures
import os
import threading
from concurrent.futures import ThreadPoolExecutor

import rarfile
import requests
from bs4 import BeautifulSoup


def download(url, category, level, name):
    path = category + "/" + level + "/" + name + ".rar"
    dir_name = os.path.dirname(path)
    os.makedirs(dir_name, exist_ok=True)
    res = requests.get(domain + url, headers=dic)
    with open(path, "wb") as f:
        f.write(res.content)
        f.flush()
        print(f'线程:{threading.current_thread().name} 下载完成:{path}')
    # 解压
    extract_rar(path, category + "/" + level)
    # 自动删除rar
    os.remove(path)


def extract_rar(file_path, extract_path):
    with rarfile.RarFile(file_path) as rf:
        for member in rf.infolist():
            if not member.filename.endswith('.doc'):
                continue
            rf.extract(member.filename, extract_path)


def getPageList(page_index):
    page_url = f"a/sjyw4/list_109_{page_index}.html"
    root = requests.get(domain + page_url, headers=dic)
    root.encoding = "gb2312"
    root_html = BeautifulSoup(root.text, "html.parser")
    tr_list = root_html.find("div", class_="listbox").find("table").find_all("tr")
    for index, tr in enumerate(tr_list):
        if index == 0 or (tr.text.find(".doc") == -1):
            continue
        tds = tr.find_all("td")
        name = tds[0].text
        suffix = tds[1].text
        level = tds[2].text
        category = tds[3].text
        child_url = domain + tds[0].find("a").get("href")
        child_html = BeautifulSoup(requests.get(child_url, headers=dic).text, "html.parser")
        a = child_html.find("div", class_="content").find_next("a")
        down_url = a.get("href")
        print(f'开始下载:{category}-{level}-{name}{suffix} url: {domain}{down_url}')
        task = pool.submit(download, down_url, category, level, name)
        task_list.append(task)


if __name__ == '__main__':
    domain = "https://www.shijuan1.com/"
    dic = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0"
    }
    # 创建线程池
    pool = ThreadPoolExecutor(5)
    task_list = []

    # 遍历10页,下载
    for page in range(1, 10):
        getPageList(page)

    # 等待所有任务完成
    concurrent.futures.wait(task_list, return_when='ALL_COMPLETED')
    pool.shutdown()
    print("所有任务完成,共下载{}个文件", len(task_list))


注意:自动解压(rar)需要安装`rarfile`库,另外需要安装winrar解压软件,并把UnRar.exe文件复制到C:\Windows目录,否则不会自动解压,要手动解压。
Python这库的支持真傻X,装了库竟然还得装个软件,谁能告诉我还有没有别的办法解压???

以上代码仅用于学习,不得非法使用,一切损失由使用者自行承担,我本人不承担任何责任。
另外,感谢第一试卷网的无私,有个免费获取试卷的渠道,大家适当使用,不要随意用爬虫攻击,珍惜当下。

运行截图

运行截图

结果图

结果图

免费评分

参与人数 19吾爱币 +23 热心值 +16 收起 理由
康斯坦丁 + 1 + 1 我很赞同!
jackydengjie + 1 + 1 谢谢@Thanks!
rh22 + 1 + 1 我很赞同!
xiaobinwang + 1 + 1 谢谢@Thanks!
pwp + 1 + 1 我很赞同!
camson + 1 我很赞同!
jiligulu + 1 我很赞同!
Diamondzl + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kekai + 1 + 1 热心回复!
Liao594 + 1 + 1 我很赞同!
numberrr007 + 1 + 1 我很赞同!
小兔一样的小白 + 1 + 1 我很赞同!
bobo2017365 + 1 谢谢@Thanks!
121woaipojie121 + 1 谢谢@Thanks!
ppkkqq + 1 + 1 谢谢@Thanks!
傲雪不傲霜 + 1 + 1 谢谢@Thanks!
lastmu + 1 我很赞同!
21MyCode + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

lz16448492 发表于 2024-5-1 00:09
小心你外甥他明年正月去剪头发。
Tinghe218 发表于 2024-4-30 22:30
hebeijianke 发表于 2024-5-1 07:38
青春莫相随 发表于 2024-4-30 21:13
哥,三年级需要修改哪里才能下载,这运行起来下载的是四年级的

第39行
page_url = f"a/sjyw4/list_109_{page_index}.html"
修改成
page_url = f"a/sjyw3/list_108_{page_index}.html"
desertlove 发表于 2024-5-11 12:30
这多少有点个人恩怨了
wang1609 发表于 2024-5-16 11:04
外甥:老登  欺人太甚
 楼主| a525 发表于 2024-9-30 09:44
blue0zw 发表于 2024-9-8 00:48
注释太少了吧,如果要下其他试卷在哪改也看不清楚

看另一个帖子,支持菜单下载。
如果真有需要,可以直接去深圳学校网下载https://www.szxuexiao.com/Examination/liunianji.html

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lley2u + 1 + 1 我很赞同!

查看全部评分

TsaoYen 发表于 2024-11-13 09:46
沉香:现在也不觉得二郎神这个舅舅不好嘛
SuperStar123 发表于 2024-11-12 16:20
学习了!!
N964342931 发表于 2024-11-10 20:21
只能说干的漂亮
csun159 发表于 2024-11-6 14:12
你外甥应该很开心吧。
康斯坦丁 发表于 2024-11-5 22:53
明年他正月就去剪头
g1201314 发表于 2024-11-5 22:17
太好了,舅舅
xonxon 发表于 2024-11-5 22:03
哈哈哈哈哈哈,等表哥家小孩长大也给他安排一个
Kaiser020 发表于 2024-11-4 14:02
支持一个
a2283wd 发表于 2024-11-4 10:44
外甥真是谢谢你哈
yyxmm 发表于 2024-11-2 22:26
太秀了,很有意思
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-13 22:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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