今天给大家介绍一个开源的网络爬虫和浏览器自动化工具: Crawlee。按官网给的定义:Crawlee是一个网络爬虫和浏览器自动化库,可以帮助我们快速构建可靠的爬虫。Crawlee 就像是一个网络数据收集和网页操作的万能工具箱,我们可以用它来从网上抓取信息,也可以让它像真人操作浏览器完成一些网页上的任务。Crawlee 提供了一套工具,让你能够爬取网页链接、抓取数据,并将其存储到磁盘或云端,同时保持高度的可配置性,以满足你项目的需求。Crawlee 使用 JavaScript 和 TypeScript 编写,我们可以用它来抓取网页上的文字、图片和其他文件,为人工智能提供训练数据。使用场景:
网页抓取:如抓取新闻网站、社交媒体、商品信息等。
数据挖掘:从网页中提取结构化数据,用于市场分析、研究等。
Crawlee 也支持 Python,可以帮助我们构建可靠的 Python 网络爬虫:开源地址:https://github.com/apify/crawleePython 版官网:https://crawlee.dev/pythonPython 版开源地址:https://github.com/apify/crawlee-python
安装测试
尝试 Crawlee 的最快方法是使用 Crawlee CLI 并选择入门示例。CLI 会为你安装所有必要的依赖项,并添加样板代码供你使用:npx crawlee create my-crawler
进入创建的 my-crawler 目录,并启动测试:我们也可以将 Crawlee 添加到你自己的项目中,使用以下命令来安装:npm install crawlee playwright
接下来我们建立一个测试代码,以新浪新闻首页 https://news.sina.com.cn 为例,页面的新闻标题和链接结构大致如下:- 新闻标题:通常使用 a 标签包裹,类名可能是 news-item 或其他动态类。
你需要使用浏览器开发者工具(F12)来确定页面中的具体选择器,比如: <a href="https://news.sina.com.cn/article/123456" class="news-item"> 新浪新闻标题 </a>
import { PlaywrightCrawler } from 'crawlee';
const crawler = new PlaywrightCrawler({
requestHandler: async ({ request, page, enqueueLinks, log }) => {
log.info(`Crawling: ${request.url}`);
const articles = await page.$$eval('a', (links) =>
links
.filter((link) => link.textContent.trim() && link.href.includes('news.sina.com.cn'))
.map((link) => ({
title: link.textContent.trim(),
url: link.href,
}))
);
articles.forEach((article) => {
console.log(`Title: ${article.title}`);
console.log(`Link: ${article.url}`);
console.log('---');
});
await enqueueLinks();
},
launchContext: {
launchOptions: {
headless: true,
},
},
});
(async () => {
await crawler.addRequests(['https:
await crawler.run();
})();
默认情况下,Crawlee 会将数据存储在当前工作目录下的 ./storage 文件夹中:pip install 'crawlee[all]'
python -c 'import crawlee; print(crawlee.__version__)'