吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3648|回复: 55
收起左侧

[Python 原创] 爬虫,开发人员工具要熟练使用

  [复制链接]
zjg121 发表于 2024-3-26 23:28
爬文库可预览页面。图片链接有规律。
[Python] 纯文本查看 复制代码
import os
from PIL import Image
from fpdf import FPDF
import shutil
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import requests


def download_image_with_requests(image_url, save_path):
    """
    使用requests库下载图片并保存到指定路径
    :param image_url: 图片的URL
    :param save_path: 保存路径(包括文件名)
    """
    try:
        response = requests.get(image_url, stream=True)
        response.raise_for_status()  # 如果请求失败,将抛出HTTPError异常
        with open(save_path, 'wb') as file:
            for chunk in response.iter_content(chunk_size=8192):
                file.write(chunk)
        print(f"Image downloaded successfully to {save_path}")
    except requests.exceptions.HTTPError as errh:
        print(f"Http Error: {errh}")
    except requests.exceptions.ConnectionError as errc:
        print(f"Error Connecting: {errc}")
    except requests.exceptions.Timeout as errt:
        print(f"Timeout Error: {errt}")
    except requests.exceptions.RequestException as err:
        print(f"OOps: Something Else: {err}")


def merge_jpg_to_pdf_and_delete_folder(folder_path):
    # 创建一个FPDF对象
    pdf = FPDF()

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".jpg") or filename.endswith(".jpeg"):
            # 打开图片并获取其尺寸
            image_path = os.path.join(folder_path, filename)
            with Image.open(image_path) as img:
                # 将图片添加到PDF中,这里假设图片尺寸适应PDF页面大小
                pdf.add_page()
                pdf.image(image_path, 0, 0, 210)  # 假设PDF页面大小为A4,即210mm宽

    # 获取当前日期和时间
    now = datetime.now()
    # 格式化日期和时间,例如:2023-04-01_15-30-45.jpg
    timestamp = now.strftime("%Y%m%d%H%M%S")
    # 创建文件名,假设文件扩展名为.jpg
    filename = f"{timestamp}.pdf"

    # 使用os.path.dirname来获取父目录
    folder_path1 = os.path.dirname(folder_path)

    # 拼接文件夹路径和文件名
    pdf_path = os.path.join(folder_path1, filename)

    # 保存PDF文件,这里假设PDF文件名为merged.pdf,保存在当前目录下
    pdf.output(pdf_path, "F")

    # 删除文件夹及其内容
    shutil.rmtree(folder_path)

    print(f"PDF file {pdf_path} created and folder {folder_path} deleted.")


folder_path = 'D:/图片'  # 替换为你想要创建的文件夹路径

# 使用makedirs创建文件夹,如果文件夹已存在且exist_ok=True,则不会抛出异常
os.makedirs(folder_path, exist_ok=True)
driver = webdriver.Edge()
driver.maximize_window()
print("网址格式示例:https://www.renrendoc.com/paper/239626450.html")
url = input("请输入类似文章网址:")
driver.get(url)
image = driver.find_element(By.XPATH, '//*[@id="page"]/div[2]/img')
driver.execute_script("arguments[0].scrollIntoView();", image)
sleep(1)
lk = image.get_attribute("src")
ims = [lk]
print(ims[0])
n = int(driver.find_element(By.CLASS_NAME,"total").text)
if n > 5:
    n = 6
for i in range(2, n):
    ims.append(lk[:-5]+str(i)+'.gif')
    print(ims[i-1])
for im in ims:
    save_path = os.path.join("d:/图片", str(ims.index(im)+1) + '.jpg')
    download_image_with_requests(im, save_path)
# 使用函数,传入包含JPG图片的文件夹路径
merge_jpg_to_pdf_and_delete_folder("d:/图片")

免费评分

参与人数 13吾爱币 +17 热心值 +11 收起 理由
LQ789 + 1 + 1 谢谢@Thanks!
HHHhpy + 1 + 1 鼓励转贴优秀软件安全工具和文档!
DeFanta + 1 用心讨论,共获提升!
Kuangsi + 1 用心讨论,共获提升!
wuuuluojun + 1 + 1 用心讨论,共获提升!
w0r1d007 + 1 + 1 我很赞同!
Bdidi + 1 + 1 我很赞同!
爱飞的猫 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
shengruqing + 1 我很赞同!
kolt1911 + 1 + 1 我很赞同!
bank5840 + 1 + 1 学习了
ttyylfd + 1 感谢分享 虽然我没学~~~~
peiki + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jessylake 发表于 2024-3-27 11:44
zjg121 发表于 2024-3-27 09:17
使用selenium,需要安装和edge浏览器版本一致的驱动Microsoft Edge WebDriver。

我按提示输入了一个 搜狐网址,然后打开了网页,原来是提示安全问题,但有许多提示,不知道啥意思:

%Run 25.py
Exception trying to discover chromedriver version: error sending request for url (https://chromedriver.storage.googleapis.com/LATEST_RELEASE_109): error trying to connect: 远程主机强迫关闭了一个现有的连接。 (os error 10054)
网址格式示例:https://www.renrendoc.com/paper/239626450.html
请输入类似文章网址:https://www.sohu.com/
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\python学习\25.py", line 80, in <module>
    image = driver.find_element(By.XPATH, '//*[@id="page"]/div[2]/img')
  File "C:\Users\Administrator\AppData\Local\Programs\Thonny\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 739, in find_element
    return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
  File "C:\Users\Administrator\AppData\Local\Programs\Thonny\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 345, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Administrator\AppData\Local\Programs\Thonny\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="page"]/div[2]/img"}
  (Session info: chrome=109.0.5414.120); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
Stacktrace:
Backtrace:
        (No symbol) [0x004C6643]
        (No symbol) [0x0045BE21]
        (No symbol) [0x0035DA9D]
        (No symbol) [0x00391342]
        (No symbol) [0x0039147B]
        (No symbol) [0x003C8DC2]
        (No symbol) [0x003AFDC4]
        (No symbol) [0x003C6B09]
        (No symbol) [0x003AFB76]
        (No symbol) [0x003849C1]
        (No symbol) [0x00385E5D]
        GetHandleVerifier [0x0073A142+2497106]
        GetHandleVerifier [0x007685D3+2686691]
        GetHandleVerifier [0x0076BB9C+2700460]
        GetHandleVerifier [0x00573B10+635936]
        (No symbol) [0x00464A1F]
        (No symbol) [0x0046A418]
        (No symbol) [0x0046A505]
        (No symbol) [0x0047508B]
        BaseThreadInitThunk [0x7570343D+18]
        RtlInitializeExceptionChain [0x77DC9832+99]
        RtlInitializeExceptionChain [0x77DC9805+54]

>>>
jessylake 发表于 2024-3-27 09:29
kolt1911 发表于 2024-3-27 09:23
webdriver.edge()修改成chrome可以吗

改成:driver = webdriver.Chrome()

Exception trying to discover chromedriver version: error sending request for url (https://chromedriver.storage.googleapis.com/LATEST_RELEASE_109): error trying to connect: 远程主机强迫关闭了一个现有的连接。 (os error 10054)
kryptos42 发表于 2024-3-27 00:21
想入门爬虫,但是不知道哪里开始,还是说啃书就可以???
chz123 发表于 2024-3-27 00:25
我是新手,也想学爬虫,同楼上的问题
kingisme945 发表于 2024-3-27 00:32
爬虫成熟工具多,自学意义不大
52UC 发表于 2024-3-27 00:51
我是新手,也想学爬虫
zym01zym 发表于 2024-3-27 02:23
学习了一下
thb0thb 发表于 2024-3-27 06:46
好用,我也去试试。
ltgb 发表于 2024-3-27 06:48
kingisme945 发表于 2024-3-27 00:32
爬虫成熟工具多,自学意义不大

不成熟的呢?
midkr 发表于 2024-3-27 06:49
我是新手,学习!
sai609 发表于 2024-3-27 07:29

不成熟用python
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 09:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表