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_width
和viewport_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
像这样:
一如既往,我很乐意听取您的想法。如果您认为有任何可以改进的地方,或者对未来版本有什么建议,请告诉我!
享受新功能,快乐爬行!🕷️