一:python将图片转化为pdf
import globimport fitzimport osfrom matplotlib import pyplot as pltdef pic2pdf(pdf_name, pic_floder):doc = fitz.open()for img in sorted(glob.glob(os.path.join(pic_floder, "1.png"))): # 读取图片,确保按文件名排序print(img)imgdoc = fitz.open(img) # 打开图片pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDFimgpdf = fitz.open("pdf", pdfbytes)doc.insertPDF(imgpdf) # 将当前页插入文档# 修订PDF文件名if pdf_name.endswith(".pdf"):pdf_name += ".pdf"# 保存在图片文件夹下save_pdf_path = os.path.join(pic_floder, pdf_name)if os.path.exists(save_pdf_path):os.remove(save_pdf_path)doc.save(save_pdf_path) # 保存pdf文件doc.close()if __name__ == '__main__':# plt.savefig("1.png", dpi=300)# plt.show()pic2pdf("2.pdf", r"F:\Notes\Python的Web框架——Django\Django课程代码\ORM")
二:使用python进行自动百度搜索,利用xpath
1.安装chrome游览器的驱动
chrome游览器驱动地址
如何查看chrome游览器的版本:
不同的版本的驱动支持不同版本的浏览器,所以版本一定要对应好。
首先找到一个版本打开来,下面有个notes,这个就可以查看部分版本支持。
下载驱动后,直接放到python环境的目录下
样例:
# coding=utf-8from time import sleepfrom selenium import webdriverfrom selenium.webdriver import Keysdef selenum_waether(url):driver = webdriver.Chrome()driver.get(url)driver.find_element_by_id("kw").send_keys("张国荣")driver.find_element("id","su").send_keys(Keys.ENTER)sleep(1000)selenum_waether("/")
点击写法:
driver.find_element(‘name’, ‘account’).click()driver.find_element(“name”, “password”).send_keys(Keys.ENTER)
输入和查找写法
driver.find_elements(By.XPATH, ‘//*[@class=“jstree-anchor”]’)driver.find_element(‘name’, ‘account’).send_keys(username)
什么是Xpath?
XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素
1、Xpath支持ID、Class、Name定位功能
1)、通过ID定位
//*[@id=‘kw’]
2)、通过Class定位
//*[@class=‘class_name’]
3)、通过Name定位
//*[@name=‘name’]
2、如果标签没有ID、Class、Name三总属性,Xpath还支持属性定位功能
@ 代表以属性定位,后面可以接标签中任意属性
//*[@other=‘attribute’]
3、当标签的属性重复时,Xpath提供了通过标签来进行过滤
将 * 换位任意标签名,则可根据标签进行筛选
//input[@placeholder=‘用户名’]
4、当标签页重复时,Xpath提供了层级过滤
例如:找不到儿子,那么就先找他的爸爸,实在不行可以再找他的爷爷
1)、支持通过 / 进行层级递进,找到符合层级关系的标签
//form/div/input[@placeholder=“用户名”]
2)、当层级都重复时,可以通过单个层级的属性进行定位
//form/div[@class=‘login-user’]/input
5、一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。Xpath提供了索引过滤
通过索引,在List中定位属性,与python的索引有些差别,Xpath从1开始
//select[@name=‘city’][1]/option[1]
6、上面几种如果都用上了之后还重复的话,我们就可以使用Xpath提供的终极神器,逻辑运算定位。and 或 or
1)、通过and来缩小过滤的范围,只有条件都符合时才能定位到
//select[@name=‘city’ and @size=‘4’ and @multiple=“multiple”]
2)、or就相反了,只要这些筛选中,其中一个出现那么久匹配到了
//select[@name=‘city’ or @size=‘4’]