自学内容网 自学内容网

【python数据处理】保存网页

直觉上处理网页信息,很多人会先将网页保存成HTML,然后做文本分析。但这样做是不够的,因为网页可能内嵌图片,这些图片在HTML里就是一处链接,离线处理时无法还原,相当于丢失了图片信息。更好的做法是将整个网页一次性保存下来。

路径一:将网页保存成mhtml,然后保存成图片。没有现成的工具可以做到这点,mhtml可以通过直接将后缀改成doc以doc的方式打开。然后通过工具将doc转成图片。

路径二:将网页保存成mhtml,然后使用chromedriver保存成pdf,然后pdf再转图片。

路径三:使用chromedriver直接将网页保存成pdf,然后pdf再转图片。

import os
import csv
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import base64

def get_url_list(csv_path):
    content_list = []
    with open(csv_path, "r", encoding="gbk") as fin:
        csv_reader = csv.reader(fin)
        for line in csv_reader:
            content_list.append(line)
    title_list, url_list = list(zip(*content_list))
    return title_list, url_list

if __name__ == "__main__":
    url_file_path = "title_url.csv"
    driver_location = 'chromedriver.exe的绝对路径'
    service = Service(driver_location)
    # 创建Chrome选项
    options = Options()
    # 无头模式,无界面
    options.add_argument("--headless")
    options.add_argument("--disable-gpu")

    driver = webdriver.Chrome(options, service)

    # 设置 PDF 选项
    pdf_options = {
        # 'paperWidth': 33.1,  # 纸张宽度,单位是英寸
        # 'paperHeight': 46.8,  # 纸张高度,单位是英寸
        'printBackground': True,  # 是否打印背景
        'landscape': False  # 是否横向打印
    }

    title_list, url_list = get_url_list(url_file_path)
    for i, url_path in enumerate(url_list):
        driver.get(url_path) # 打开网页

        # 使用 Chrome DevTools 协议保存为 PDF
        pdf_data = driver.execute_cdp_cmd('Page.printToPDF', pdf_options)

        # 解码并保存 PDF 文件
        pdf_content = base64.b64decode(pdf_data['data'])
        cur_title = title_list[i]
        cur_title = cur_title.replace("/", "_").replace("\\", "_")
        output_path = "pdf_output/" + cur_title + ".pdf"
        print(output_path)
        try:
            with open(output_path, 'wb') as file:
                file.write(pdf_content)
        except:
            print("fail", output_path)

    # 关闭 WebDriver
    driver.quit()


原文地址:https://blog.csdn.net/mengmengz07/article/details/142313172

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!