http://www.1ppt.com/moban/
可以免费的下载PPT模板,当然如果要人工一个个下,还是挺麻烦的,我们可以利用requests
轻松下载
访问这个主页,我们可以看到下面的样式
点每一个PPT模板的图片,我们可以进入到详细的信息页面,翻到下面,我们可以看到对应的下载地址
点击这个下载的按钮,我们便可以下载对应的PPT压缩包
那我们就开始做吧
首先,查看网页的源代码,我们可以看到每一个显示的li都有对应的PPT详细的链接,我们只要访问这个链接,然后找到按钮下载即可
首先导入相关的库
# 导入requests库
import requests
# 导入正则库进行信息提取
import re
获取网页源代码
url = "http://www.1ppt.com/moban/"
# 设置请求头
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"}
r = requests.get(url, headers=header)
try:
# 如果请求失败的话进行处理
r.raise_for_status()
except:
print(f"请求 {r.url} 失败")
else:
r.encoding = r.apparent_encoding
html = r.text
提取对应的网址
# 先获取整个 tplist
tplist = re.findall(r'<ul class="tplist">(.*?)</ul>', html, re.S)[0]
# 每一个li元素中包含多个需要的 链接,我们取第一个即可
# 获取界面中需要的所有的链接
link_list = re.findall(r"<li>.*?<a href=\"(.*?)\"", tplist)
到详细网址里面找到下载地址
for link in link_list:
if not link.startswith("http"): # 如果不是绝对地址
link = "http://www.1ppt.com" + link
response = requests.get(link, headers=header) # 请求对应的地址
try:
response.raise_for_status()
except:
print(f"请求 {response.url} 失败")
else:
link_text = response.text
download_url = re.findall(r"<ul class=\"downurllist\">.*?<li.*?href=\"(.*?)\".*?</li>.*?</ul>",link_text, re.S)[0]
下载对应的文件
ppt = requests.get(download_url, headers=header) # 请求对应的文件
filename = re.findall(r"<title>(.*?)</title>", link_text, re.S)[0] # 文件名,亦可以自定义,但不能重复
with open(filename+".zip", "wb") as f: # 以二进制的形式写入文件
f.write(ppt.content)
当然这只是第一页,我们还可以对其他页面的PPT进行下载
我们随机访问几个页面,发现其url如下:
http://www.1ppt.com/moban/ppt_moban_6.html
http://www.1ppt.com/moban/ppt_moban_7.html
然后试试一个页面也满足这个方式,所以我们只需要进行一个循环,不断访问下载即可
比如:
num = 1
while True:
downloadPPT(url="http://www.1ppt.com/moban/ppt_moban_{}.html".format(num))
num+=1
如果中间报错,直接停下来即可
源码下载,可以回复PPT