Web  收录于 VXNA 的 1 个网站
27 篇文章 feed address
 Honwhy 最近的时间轴更新
我在想如果公司发给我多些工资我就不会因为钱的问题而生活不愉快了。
2014-03-08 10:45:21 +08:00
Honwhy

Honwhy

out of my mind
V2EX 第 11698 号会员,加入于 2011-09-08 08:45:43 +08:00
今日活跃度排名 16060
Honwhy 最近回复了
8 天前
回复了 moecasts 创建的主题 奇思妙想 2025 了,做什么应用会比较有意思?
背单词
健身
爬山
有消息提醒吗
-- 场地信息是用户提供的,你怎么申请通过微信审核的呢。 教教我
不错啊
学习前端知识吧。
1 、JavaScript 高级程序设计
2 、Vue 设计与实现
3 、jQuery 技术内幕(老古董,但是思路还是不错的。。。,随便翻翻不建议全读,太大部头了。。。
。。。还有很多,欢迎补充
30 天前
回复了 vanchKong 创建的主题 Blogger 建博客,大伙有什么先进经验吗
我曾经做过考古,方式还是蛮多的。(当然我现在使用的是免费的方案)
1 、https://mp.weixin.qq.com/s/uiJMQYTwGFcPLAzIj5ad6w
2 、https://honwhy.wang/posts/2025-08-24-github-cf-pages-blog/
@Honwhy #3 爬虫脚本要调整下,
$('#hexo-douban-item3 .hexo-douban-item').each((_, el) => {
const title = $(el).find('.hexo-douban-title').text().trim()
const url = $(el).find('.hexo-douban-title > a').attr('href').trim()
// const author = $(el).find('.book-author').text().trim()
const img = $(el).find('.hexo-douban-picture>img').attr('src')
const review = $(el).find('.hexo-douban-comments').text().trim()
const rating = review.slice(0, 10).replace(/[^0-9.]/g, '')
books.push({ title, url, rating, cover: img, description: review })
})
@EngAPI #9 我 get 到你的意思了,我想想怎么支持下。
@EngAPI
已经支持了。 请享用。

速度并不会很快,要读取豆瓣的豆列。
@EngAPI 准备支持豆瓣书单,例如这个,https://www.douban.com/doulist/45097500/

正在开发中。。。

感谢关注和支持🎉
@conge 我通过 cheerio 爬取了这个网址所有书籍,然后结合书单的数据结构 JSON ,做了一次拼装。
然后再导入进来。

## 效果



## 代码
```js
import fs from 'node:fs' // 导入 fs 模块来读取文件
import path from 'node:path' // 导入 path 模块来处理文件路径
import { fileURLToPath } from 'node:url' // 导入 fileURLToPath
import * as cheerio from 'cheerio'
import clipboardy from 'clipboardy' // 导入 clipboardy 包
import fetch from 'node-fetch'

// 获取当前文件的目录名
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
async function scrapeBooks() {
const url = 'https://conge.livingwithfcs.org/books/'
const resp = await fetch(url)
const html = await resp.text()
const $ = cheerio.load(html)

const books = []

$('.hexo-douban-item').each((_, el) => {
const title = $(el).find('.hexo-douban-title').text().trim()
// const author = $(el).find('.book-author').text().trim()
const img = $(el).find('.hexo-douban-picture>img').attr('src')
const review = $(el).find('.hexo-douban-comments').text().trim()
const rating = review.slice(0, 10).replace(/[^0-9.]/g, '')
books.push({ title, rating, cover: img, description: review })
})
// 使用 __dirname 确保路径正确
const bookListPath = path.join(__dirname, '../public/book-lists.json')
const bookListRaw = fs.readFileSync(bookListPath, 'utf8')
const bookList = JSON.parse(bookListRaw)

bookList[0].books = books
bookList[0].name = 'conge-书单'
bookList[0].qrCodeUrl = url
// bookList stringify and copy to clipboard
// 使用 clipboardy.write() 写入剪贴板
await clipboardy.write(JSON.stringify(bookList, null, 2))

console.log('数据已成功抓取并复制到剪贴板!🎉')
}

scrapeBooks()
```
## 可惜
- 书单中缺少作者信息
- 书单的评论描述有的缺少,只有评分
- 书单的评论描述有的太长了(是否能提供更加言简意赅的精彩点评)
- 书单还缺少分类,生成的图片太长了,可能会导出失败,是否可以增加分类榜单呢
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   975 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 19:06 · PVG 03:06 · LAX 12:06 · JFK 15:06
♥ Do have faith in what you're doing.