一:python将图片转化为pdf
import glob
import fitz
import os
from matplotlib import pyplot as plt
def 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() # 使用图片创建单页的 PDF
imgpdf = 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-8
from time import sleep
from selenium import webdriver
from selenium.webdriver import Keys
def 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("https://www.baidu.com/")
点击写法:
- 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’]