一: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游览器的版本:

JPG python 把其他图片转换为 python 图片转pdf_selenium


不同的版本的驱动支持不同版本的浏览器,所以版本一定要对应好。首先找到一个版本打开来,下面有个notes,这个就可以查看部分版本支持。

JPG python 把其他图片转换为 python 图片转pdf_selenium_02


JPG python 把其他图片转换为 python 图片转pdf_python_03


下载驱动后,直接放到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’]