📅  最后修改于: 2023-12-03 15:36:12.881000             🧑  作者: Mango
AO3(Archive of Our Own)是一个由非营利性组织OTW(Organization for Transformative Works)所运营的一个多语言的非盈利性的网站,是一个面向批评家和粉丝的开放式网络归档,包含了各种类型的创意作品。
本文旨在介绍如何使用Javascript从AO3上抓取数据。在本文中,我们将介绍如何使用Node.js和Cheerio来进行数据抓取。Cheerio是一个类似于jQuery的库,可以让我们使用jQuery语法在服务器端操作DOM。
在开始之前,你需要安装Node.js和npm。如果你还没有安装,请到官方网站https://nodejs.org下载并安装。
接下来,我们需要创建一个新的Node.js项目。首先,在终端中进入你的项目目录:
cd ~/my-ao3-scraper
然后,初始化npm项目:
npm init -y
安装Cheerio:
npm install cheerio --save
现在我们已经准备好开始从AO3上抓取数据了。我们将使用Node.js的内置http模块来发起HTTP请求,然后使用Cheerio解析HTML。
让我们首先创建一个名为scraper.js
的文件,并将以下代码复制到文件中:
const http = require("http");
const cheerio = require("cheerio");
const url = "https://archiveofourown.org/works/1234567";
http.get(url, (res) => {
let html = "";
res.on("data", (chunk) => {
html += chunk;
});
res.on("end", () => {
const $ = cheerio.load(html);
const title = $('h2.title').text().trim();
const author = $('a[rel=author]').text().trim();
const summary = $('blockquote.summary').text().trim();
const wordCount = $('.stats > dd > .words').text().trim();
console.log("Title: " + title);
console.log("Author: " + author);
console.log("Summary: " + summary);
console.log("Word Count: " + wordCount);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
代码中的url
变量包含我们要抓取的AO3作品的URL。你可以将其替换为你要抓取的AO3作品的URL。在这个例子中,我们将抓取这个作品的标题、作者、简介和字数。
接下来,在终端中运行以下命令:
node scraper.js
如果一切正常,你应该看到类似于以下的输出:
Title: My AO3 work
Author: John Doe
Summary: This is my AO3 work.
Word Count: 1000
现在,我们已成功从AO3上抓取了作品的标题、作者、简介和字数。你可以根据需要,继续抓取其他的信息。