用途:抓取并总结 Hacker News 与 hckrnews.com 的头版故事、文章及其评论线程。注意 hckrnews.com 为 JavaScript 渲染,curl 仅返回空壳,不应抓取它,改用官方 Hacker News API(Firebase 与 Algolia),返回纯 JSON,可直接用 curl。
主要能力与用法: 一、获取当前头版前十。topstories.json 按排名返回 500 个故事 ID,取前 N 个逐个查询。 curl -sL 'https://hacker-news.firebaseio.com/v0/topstories.json' -o /tmp/top.json 再用 Python 读取 ID 列表并请求 item/{id}.json,输出标题、分数、评论数与 URL。 二、按主题搜索特定故事。使用 Algolia: curl -sL 'https://hn.algolia.com/api/v1/search?query=YOUR+QUERY&tags=story' -o /tmp/s.json 加 &numericFilters=created_at_i>UNIXTS 可限制为近期故事,避免匹配到旧重复标题。search 按相关度排序,search_by_date 按时间排序;优先选分数或评论数最高的 objectID。 三、抓取故事与评论树: curl -sL 'https://hn.algolia.com/api/v1/items/OBJECT_ID' -o /tmp/hn.json 响应为嵌套树,顶层 children 为根评论。可展平并清洗 HTML 实体后按线程顺序打印根评论;Algolia 每条评论的 points 字段现恒为 null,应按线程顺序而非分数排序。更深线程需递归 children 并记录深度。 四、抓取链接文章:用 curl -sL <url> 获取,再用 sed 's/<[^>]*>//g' 去标签提取正文,或 grep 关键句。若页面依赖 JS 或被付费墙阻挡,尝试 Wayback 快照: curl -sL 'http://archive.org/wayback/available?url=ARTICLE_URL' -o /tmp/wb.json 再读取 archived_snapshots.closest.url 并抓取。若主站屏蔽出站 curl,可通过可用的容器或代理抓取。
摘要格式:每个故事给出标题、分数、评论数、来源、文章要点数句,然后将讨论归为 3-6 个反复出现的主题(赞同、反驳、跑题),而非逐条列出评论;若顶级线程为批评或反向观点需特别注明,因为这在 HN 上很常见。
限制:Algolia 评论 points 恒为 null;hckrnews.com 无法直接抓取;JS 重页面或付费墙需 Wayback 或代理;官方资料未提供更多配置、安装或价格信息。