吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6813|回复: 122
收起左侧

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

    [复制链接]
a525 发表于 2024-4-30 20:08
外甥在家闲置,不是打游戏就是看动漫。都快上五年级了,还不知道努力,将来还指望他给我端一碗饭吃呢!!!
所以,我今天给他买了个打印机,又花了点时间写个爬虫,弄了一批卷子,等后天打印机送到家,让他的五一充实起来。
废话少说,上代码!!!!!!!
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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
外甥真是谢谢你哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-12 23:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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