0.4.1 版本发布摘要(2024 年 12 月 8 日):新功能带来显著效率提升!

这篇文章是在 ChatGPT 的帮助下生成的,请谨慎看待一切。🧂

大家好,

我刚刚完成了 Crawl4AI 0.4.1 版本的开发,其中有一些我认为会对您有所帮助的改进。我会解释这些新功能、它们的重要性以及如何使用这些功能(并附上代码支持)。让我们开始吧。


更好地处理延迟加载(包括图像)

爬虫程序经常会错过延迟加载的内容,尤其是图片,这让我很困扰。在这个版本中,我确保 Crawl4AI 会等待所有图片加载完毕后再继续执行。这很有用,因为许多现代网站仅在图片位于视口中或执行某些 JavaScript 代码后才会加载它们。

启用方法如下:

await crawler.crawl(
    url="https://example.com",
    wait_for_images=True  # Add this argument to ensure images are fully loaded
)

其作用是:1. 等待页面达到“网络空闲”状态。2. 确保页面上的所有图像都已完全加载。

这一改变可以解决您可能遇到的大多数延迟加载情况。


纯文本模式(快速、轻量级爬取)

有时,您根本不需要下载图片或处理 JavaScript。例如,如果您要抓取文本数据,则可以启用纯文本模式来加快速度。通过禁用图片、JavaScript 和其他高负载资源,此模式在大多数情况下可以使抓取速度提高 3-4 倍。

打开方法如下:

crawler = AsyncPlaywrightCrawlerStrategy(
    text_mode=True  # Set this to True to enable text-only crawling
)

什么时候text_mode=True,爬虫会自动:- 禁用 GPU 处理。- 阻止图像和 JavaScript 资源。- 将视口大小减小到 800x600(您可以使用以下方法覆盖此设置viewport_widthviewport_height)。

如果您需要抓取数千个只关心文本的页面,此模式将为您节省大量时间和资源。


动态调整视口

另一个实用的新增功能是能够动态调整视口大小以匹配页面内容。当您使用响应式布局或希望确保页面所有部分都能正常加载时,此功能尤其有用。

其工作原理如下:1. 爬虫程序在页面加载后计算页面的宽度和高度。2. 它会调整视口以适应内容尺寸。3. (可选)它使用 Chrome DevTools 协议 (CDP) 模拟缩小,使所有内容都能适应视口。

要启用此功能,请使用:

await crawler.crawl(
    url="https://example.com",
    adjust_viewport_to_content=True  # Dynamically adjusts the viewport
)

这种方法可确保整个页面加载到视口中,特别是对于基于可见性加载内容的布局。


模拟整页滚动

有些网站会在您向下滚动页面时动态加载数据。为了处理这些情况,我添加了全页扫描支持。它模拟滚动到页面底部,检查是否有新内容并捕获所有内容。

以下是一个例子:

await crawler.crawl(
    url="https://example.com",
    scan_full_page=True,   # Enables scrolling
    scroll_delay=0.2       # Waits 200ms between scrolls (optional)
)

这里发生了什么:1. 爬虫程序逐步向下滚动,每次滚动后等待内容加载。2. 当没有新内容出现时停止(即动态元素停止加载)。3. 如果需要,它会滚动回顶部,然后再完成。

如果您曾经处理过无限滚动页面,这将为您省去很多麻烦。


重复使用浏览器会话(节省设置时间)

默认情况下,每次抓取页面时都会创建一个新的浏览器上下文(或标签页)。这对于小型抓取来说还好,但如果您正在处理大型数据集,则重复使用同一个会话会更高效。

我添加了一个名为create_session为了这:

session_id = await crawler.create_session()

# Use the same session for multiple crawls
await crawler.crawl(
    url="https://example.com/page1",
    session_id=session_id  # Reuse the session
)
await crawler.crawl(
    url="https://example.com/page2",
    session_id=session_id
)

这样可以避免为每个页面创建新的标签,从而加快抓取速度并减少内存使用。


其他更新

以下是我所做的一些小更新: - 灯光模式:使用light_mode=True禁用后台进程、扩展程序和其他不必要的功能,提高浏览器效率。- 日志记录:改进日志,使调试更容易。- 默认值:为以下内容添加了合理的默认值:delay_before_return_html (现在设置为 0.1 秒)。


如何获取更新

您可以安装或升级到版本0.4.1像这样:

pip install crawl4ai --upgrade

一如既往,我很乐意听取您的想法。如果您认为有任何可以改进的地方,或者对未来版本有什么建议,请告诉我!

享受新功能,快乐爬行!🕷️



> Feedback