一、简介
现在越来越多的人开始找工作,而好的简历是面试中脱颖而出的关键因素之一。传统的文字简历已经不能满足人们的需求,漂亮而有内涵的简历更容易吸引招聘方的注意,提高简历的通过率。Canva是一个流行的在线图形设计工具,能够提供丰富的模板和设计元素,同时支持互动式操作。利用Python,我们能够控制Canva的API完成自动化生成简历的过程,省去了繁琐的手动设计过程。
二、Canva API的获取和开发
要调用Canva API需要先申请一个开发者账号和API密钥,方法如下:
1.打开Canva的官网(https://www.canva.com/),注册一个账号;
2.打开Canva开发者中心(https://www.canva.com/developers/),点击“Get Started”;
3.按照说明创建自己的开发者账号并且创建一个API密钥。
经过以上步骤,我们拿到了API密钥,可以调用Canva API进行自动化生成简历了。
三、使用Selenium模拟网页操作
我们可以用Selenium来模拟人类用户在Canva上的操作,实现通过图片来自动生成个人简历的目的。Selenium是一个自动化测试工具,也可以用于Web数据挖掘和WebUI自动化测试。它支持多个Web浏览器,包括Chrome,Firefox和Safari等浏览器。Selenium是基于客户端和WEB交互协议的,所以可以模拟页面上的各种交互操作。以下是Selenium实现Canva自动化操作的代码。
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains options = webdriver.ChromeOptions() options.add_argument("--disable-notifications") driver = webdriver.Chrome(chrome_options=options) driver.get("https://www.canva.com/") actions = ActionChains(driver) login = driver.find_element_by_xpath('/html/body/div[5]/div[2]/div/div/div/div/div[1]/a[1]') login.click() email_element =driver.find_element_by_xpath('//*[@id="emailInput"]') email_element.clear() email_element.send_keys('你的Canva账号邮箱') password_element = driver.find_element_by_xpath('//*[@id="passwordInput"]') password_element.clear() password_element.send_keys('你的Canva账号密码') login_btn = driver.find_element_by_xpath('//*[@id="loginButton"]') login_btn.click() driver.get('https://www.canva.com/design/DABjMM_hxM8/ShBG2Ve6GJNm7lX7_k4ToQ/view') select_tool = driver.find_element_by_xpath('//*[@id="mainControl"]') select_tool.click() paragraph = driver.find_element_by_xpath('//div[@class = "editor-large-canvas"]/div/div[2]/div[1]/div[2]/div[1]/div[1]') actions.move_to_element(paragraph).click().send_keys('My name is Tom.\nI studied at Harvard University.').perform()
四、生成PPT格式简历
我们可以用Python的PPT库来生成PPT格式的简历。以下是用Python处理模板图片,替换其中的文字,生成PPT简历的代码。
import os import re import pptx from PIL import Image, ImageDraw, ImageFont img = Image.open('template.png') draw = ImageDraw.Draw(img) # 用渐变颜色对姓名进行渲染 x, y = 950, 380 text = 'Tom Wang' fill_color = 'rgb(208,63,53)' shadow_color = 'rgb(255,144,130)' font = ImageFont.truetype('C:\WINDOWS\Fonts\STXINWEI.TTF', 92) w, h = draw.textsize(text, font=font) grad = [(128, 159, 255), (0, 46, 93)] error = grad[1][0] - grad[0][0], grad[1][1] - grad[0][1], grad[1][2] - grad[0][2] for i in range(w): ratio = i/w p = grad[0][0]+int(error[0]*ratio), grad[0][1]+int(error[1]*ratio), grad[0][2]+int(error[2]*ratio) draw.text((x+i, y), text[i], font=font, fill=p, shadowcolor=shadow_color) # 对教育经历进行渲染 x, y = 150, 580 text = 'Education\nHarvard University' font = ImageFont.truetype('C:\WINDOWS\Fonts\STFANGSO.TTF', 26) draw.text((x, y), text, font=font, fill='rgb(111, 111, 111)') # 对技能进行渲染 x, y = 150, 700 text = 'Skills\nPython\nJava\nC++\nHTML/CSS' font = ImageFont.truetype('C:\WINDOWS\Fonts\STFANGSO.TTF', 26) draw.text((x, y), text, font=font, fill='rgb(111, 111, 111)') # 对工作经历进行渲染 x, y = 620, 580 text = 'Work Experience\n2018-2020 Python Developer\n2016-2018 Java Developer' font = ImageFont.truetype('C:\WINDOWS\Fonts\STFANGSO.TTF', 26) draw.text((x, y), text, font=font, fill='rgb(111, 111, 111)') img.save('resume.png') prs = pptx.Presentation() slide_layout = prs.slide_layouts[1] slide = prs.slides.add_slide(slide_layout) left = top = width = height = pptx.util.Inches(1) pic = slide.shapes.add_picture('resume.png', left, top, width=prs.slide_width, height=prs.slide_height) os.remove('resume.png') prs.save('resume.pptx')