我来签到了,学习进度跟不上了
保存网页的神器
import asyncio
import re
from pyppeteer import launch
def clean_filename(url):
"""清理URL中的非法字符,生成合法文件名"""
# 匹配Windows/Linux/Mac中不允许的文件名字符(/ : ? * " < > | \)
illegal_chars = r'[\/:*?"<>|\\]'
# 用下划线替换非法字符,连续多个特殊字符合并为一个下划线
cleaned = re.sub(illegal_chars, '_', url)
# 移除首尾多余的下划线
cleaned = cleaned.strip('_')
# 限制文件名长度
return cleaned[:100]# 保留前100个字符
async def process_single_url(browser, url):
"""处理单个URL:生成PDF + 截取logo(用URL路径作为文件名)"""
page = None
try:
# 清理URL生成合法文件名前缀
file_prefix = clean_filename(url)
# 创建新页面
page = await browser.newPage()
await page.setViewport({'width': 1280, 'height': 800})
# 访问URL并等待加载
print(f"\n开始处理:{url}")
await page.goto(url, timeout=30000, waitUntil='networkidle0')
await page.waitForSelector('body', timeout=10000)
# 生成PDF(用清理后的URL作为文件名)
pdf_path = f"{file_prefix}_page.pdf"
await page.pdf({
'path': pdf_path,
'format': 'A4',
'printBackground': True,
'displayHeaderFooter': False,
'margin': {'top': '1cm', 'right': '1cm', 'bottom': '1cm', 'left': '1cm'}
})
print(f"✅ PDF生成成功:{pdf_path}")
# 截取logo
logo_selector = 'body .hdc a img'
logo_path = f"{file_prefix}_logo.png"
await page.waitForSelector(logo_selector, timeout=10000)
logo_element = await page.querySelector(logo_selector)
await logo_element.screenshot({'path': logo_path})
print(f"✅ Logo截图成功:{logo_path}")
except Exception as e:
print(f"❌ 处理{url}失败:{str(e)}")
finally:
if page:
await page.close()
async def main():
# 批量处理的URL列表
urls = [
'https://fishc.com.cn',
'https://fishc.com.cn/forum.php?mod=collection',# 淘帖
'https://fishc.com.cn/forum.php?mod=guide' # 导读
]
browser = None
try:
browser = await launch(
headless=True,
executablePath=r'C:\Program Files\Google\Chrome\Application\chrome.exe',
)
for url in urls:
await process_single_url(browser, url)
except Exception as e:
print(f"浏览器启动错误:{e}")
finally:
if browser:
await browser.close()
print("\n批量处理完成!")
if __name__ == '__main__':
asyncio.run(main())
实用工具
这个工具挺好的,我也再用~~~
谢谢分享这个小工具
pyppeteer 模块装了来试试
快来打开学习
学习到了
这个工具好!
正好对异步不是很了解,借此了解一下{:10_256:}
学到了
学习了,马上去试试
学习到了
学习了
真不错,先学习
正想搞点东西,这个工具不错。异步编程学习一下
网页自动化截图工具-打卡学习
利用 Pyppeteer 调用本机 Chrome 浏览器,实现网页截图、PDF 生成
喜欢
能截完整的图,很棒啊