📜  从 ao3 抓取数据 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:12.881000             🧑  作者: Mango

从AO3抓取数据 - Javascript

简介

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上抓取了作品的标题、作者、简介和字数。你可以根据需要,继续抓取其他的信息。