批量多线程下载某网站英语四六级和考研英语真题资料

多线程下载英语真题资料pdf

1.一开始想手动下载,但是觉得那真叫一个慢,后来就用程序写了
2.他那个pdf文件名是31位的数字,我具体不知道怎么生成的,所以我用的selenium
上代码,代码可以直接用但要改一个文件路径:
劝你们不要用多线程,我下了10个文件就出问题了。并且一下子下载某一类,不是混在一起不好找。

import concurrent.futures
from pprint import pprint
import time
import parsel
import requests
from selenium import webdriver
# 网址,不错的网站,免费,真的很好
url = 'https://zhenti.burningvocabulary.com'
# 获取浏览器对象,路径写自己的,需要安装东西,我有一篇文章已经写了需要安装的软件
driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe')
# 得到形如/cet4/....
get_all_list = []
# 这里可以根据自己情况下载,四级六级考研,或者专八
englist = ['cet4','cet6','kaoyan']
time1 = int(time.time())

# 获取相应的地址
def get_url_list(ename):
    url = 'https://zhenti.burningvocabulary.com/'+ename
    response = requests.get(url)
    selector = parsel.Selector(response.text)
    e_list = selector.css('.mt-5 .row .col-12 .link-primary::attr(href)').getall()
    return e_list


# pprint(get_url_list('cet4'))

# 获取所有的绝对网络地址
def get_all_english_list(enlist):
    for addr in enlist:
        ur = ""
        ur = url + addr
        get_all_list.append(ur)


def chuan_value():
    for value in englist:
        get_all_english_list(get_url_list(value))


def save_pdf():
    chuan_value()
    for u in get_all_list:
        driver.get(u)
        time.sleep(3)
        # 点击下载按钮
        driver.find_element_by_css_selector('#download').click()
        time.sleep(10)


def main():
    save_pdf()


if __name__ == '__main__':
	# 创建线程池,因为我电脑性能不是很好,就只创建了3个
    exe = concurrent.futures.ThreadPoolExecutor(max_workers=3)
    exe.submit(main())
    # 关闭线程池
    exe.shutdown()
    # main()
    pprint(get_all_list)
    print((int(time.time()) - time1))

后期应该会把相应听力音频及答案下载代码发布,看有没有时间。这段时间有点忙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值