多线程下载英语真题资料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))
后期应该会把相应听力音频及答案下载代码发布,看有没有时间。这段时间有点忙。