本帖最后由 txq0211 于 2022-3-30 12:15 编辑
在福利经验区看人在求历代地图矢量图。
百度一看,木有,倒是看的天涯这个各阶段98张图。
新手上路,做了个小爬虫,爬取这98张图,然后试着拓展下保存到ppt。
偷个懒,简单的步骤写在代码里面了。
如果不足之处,请各位指正。
先上图,代码在下面:
[Python] 纯文本查看 复制代码 import os
import pptx
from pptx.util import Inches
import requests
import re
def getMap():
url = 'http://bbs.tianya.cn/post-no04-2163192-1.shtml'
response = requests.get(url).text
# 可以去掉[:-3]先体验下,最后三张图不是
maplists = re.findall('original="(.+?)"',response)[:-3]
# print(len(maplists))
i=0
for maplist in maplists:
map_res = requests.get(maplist)
if map_res.status_code == 200:
i += 1
path = '%03d.jpg'%i
with open(path,'wb') as f:
f.write(map_res.content)
print('已完成%03d张图片下载'%i)
if __name__ == '__main__':
ppt_filename = input('输入目标ppt文件名(无需后缀):')
full_ppt_filename = '{}.{}'.format(ppt_filename, 'pptx')
# 下载地图
getMap()
# 设置ppt路径
ppt_file = pptx.Presentation()
# 设置ppt比例预设
ppt_file.slide_width = Inches(16)
ppt_file.slide_height = Inches(9)
pic_files = [fn for fn in os.listdir() if fn.endswith('.jpg')]
# 按图片编号顺序导入
for fn in sorted(pic_files, key=lambda item: int(item[:item.rindex('.')])):
slide = ppt_file.slides.add_slide(ppt_file.slide_layouts[1])
# 为PPTX文件当前幻灯片中第一个文本框设置文字,本文代码中可忽略
slide.shapes.placeholders[0].text = fn[:fn.rindex('.')]
# 导入并为当前幻灯片添加图片,起始位置和尺寸可修改16:9
slide.shapes.add_picture(fn, Inches(0), Inches(0), Inches(16), Inches(9))
ppt_file.save(full_ppt_filename)
|