Hacker News (news.ycombinator.com) のスクレイピング方法
Hacker Newsをスクレイピングして、トップの技術ストーリー、求人情報、コミュニティの議論を抽出する方法を学びましょう。市場調査やトレンド分析に最適です。
ボット対策検出
- レート制限
- 時間あたりのIP/セッションごとのリクエストを制限。ローテーションプロキシ、リクエスト遅延、分散スクレイピングで回避可能。
- IPブロック
- 既知のデータセンターIPとフラグ付きアドレスをブロック。効果的に回避するにはレジデンシャルまたはモバイルプロキシが必要。
- User-Agent Filtering
Hacker Newsについて
Hacker Newsが提供するものと抽出可能な貴重なデータを発見してください。
テックハブ
Hacker Newsは、スタートアップインキュベーターである Y Combinator が運営する、コンピュータサイエンスと起業家精神に焦点を当てたソーシャルニュースサイトです。ユーザーが技術記事、スタートアップのニュース、深い議論へのリンクを投稿する、コミュニティ主導のプラットフォームとして機能しています。
データの豊富さ
このプラットフォームには、高評価を得た技術ストーリー、「Show HN」でのスタートアップの立ち上げ、「Ask HN」でのコミュニティへの質問、専門的なジョブボードなど、豊富なリアルタイムデータが含まれています。シリコンバレーのエコシステム、ひいてはグローバルな開発者コミュニティの鼓動を伝える場所として広く認識されています。
戦略的価値
このデータをスクレイピングすることで、企業や研究者は 新興技術 の監視、競合他社の言及の追跡、影響力のある思考リーダーの特定が可能になります。サイトのレイアウトが非常に安定しており軽量であるため、自動化された技術ニュース集約において最も信頼できるソースの一つとなっています。

なぜHacker Newsをスクレイピングするのか?
Hacker Newsからのデータ抽出のビジネス価値とユースケースを発見してください。
新しいプログラミング言語や開発者ツールを早期に特定する
スタートアップのエコシステムで新しいローンチや資金調達ニュースを監視する
「Who is hiring」スレッドを監視することで技術職採用のリードを獲得する
ソフトウェアのリリースや企業の発表に関する感情分析を行う
ニッチな読者向けに質の高い技術ニュースアグリゲーターを構築する
技術コミュニティにおける情報拡散に関する学術研究を行う
スクレイピングの課題
Hacker Newsのスクレイピング時に遭遇する可能性のある技術的課題。
レイアウトに使用されているネストされたHTMLテーブル構造のパース
データベース保存のための「2時間前」のような相対的な時間文字列の処理
一時的なIP禁止を引き起こすサーバー側のレート制限の管理
複数ページにまたがる深いコメント階層の抽出
Hacker NewsをAIでスクレイピング
コーディング不要。AI搭載の自動化で数分でデータを抽出。
仕組み
必要なものを記述
Hacker Newsから抽出したいデータをAIに伝えてください。自然言語で入力するだけ — コードやセレクターは不要です。
AIがデータを抽出
人工知能がHacker Newsをナビゲートし、動的コンテンツを処理し、あなたが求めたものを正確に抽出します。
データを取得
CSV、JSONでエクスポートしたり、アプリやワークフローに直接送信できる、クリーンで構造化されたデータを受け取ります。
なぜスクレイピングにAIを使うのか
AIを使えば、コードを書かずにHacker Newsを簡単にスクレイピングできます。人工知能搭載のプラットフォームが必要なデータを理解します — 自然言語で記述するだけで、AIが自動的に抽出します。
How to scrape with AI:
- 必要なものを記述: Hacker Newsから抽出したいデータをAIに伝えてください。自然言語で入力するだけ — コードやセレクターは不要です。
- AIがデータを抽出: 人工知能がHacker Newsをナビゲートし、動的コンテンツを処理し、あなたが求めたものを正確に抽出します。
- データを取得: CSV、JSONでエクスポートしたり、アプリやワークフローに直接送信できる、クリーンで構造化されたデータを受け取ります。
Why use AI for scraping:
- 複雑なCSSセレクタを書かずに、ポイント&クリックでストーリーを選択可能
- シームレスなページネーションのための「More」ボタンの自動処理
- ローカルIPがレート制限されるのを防ぐための組み込みクラウド実行
- フロントページを1時間ごとに自動取得するためのスケジュール実行
- リアルタイムアラートのためのGoogle SheetsやWebhooksへの直接エクスポート
Hacker News用ノーコードWebスクレイパー
AI搭載スクレイピングのポイント&クリック代替手段
Browse.ai、Octoparse、Axiom、ParseHubなどのノーコードツールは、コードを書かずにHacker Newsをスクレイピングするのに役立ちます。これらのツールは視覚的なインターフェースを使用してデータを選択しますが、複雑な動的コンテンツやアンチボット対策には苦戦する場合があります。
ノーコードツールでの一般的なワークフロー
一般的な課題
学習曲線
セレクタと抽出ロジックの理解に時間がかかる
セレクタの破損
Webサイトの変更によりワークフロー全体が壊れる可能性がある
動的コンテンツの問題
JavaScript多用サイトは複雑な回避策が必要
CAPTCHAの制限
ほとんどのツールはCAPTCHAに手動介入が必要
IPブロック
過度なスクレイピングはIPのブロックにつながる可能性がある
Hacker News用ノーコードWebスクレイパー
Browse.ai、Octoparse、Axiom、ParseHubなどのノーコードツールは、コードを書かずにHacker Newsをスクレイピングするのに役立ちます。これらのツールは視覚的なインターフェースを使用してデータを選択しますが、複雑な動的コンテンツやアンチボット対策には苦戦する場合があります。
ノーコードツールでの一般的なワークフロー
- ブラウザ拡張機能をインストールするかプラットフォームに登録する
- ターゲットWebサイトに移動してツールを開く
- ポイント&クリックで抽出するデータ要素を選択する
- 各データフィールドのCSSセレクタを設定する
- 複数ページをスクレイピングするためのページネーションルールを設定する
- CAPTCHAに対処する(多くの場合手動解決が必要)
- 自動実行のスケジュールを設定する
- データをCSV、JSONにエクスポートするかAPIで接続する
一般的な課題
- 学習曲線: セレクタと抽出ロジックの理解に時間がかかる
- セレクタの破損: Webサイトの変更によりワークフロー全体が壊れる可能性がある
- 動的コンテンツの問題: JavaScript多用サイトは複雑な回避策が必要
- CAPTCHAの制限: ほとんどのツールはCAPTCHAに手動介入が必要
- IPブロック: 過度なスクレイピングはIPのブロックにつながる可能性がある
コード例
import requests
from bs4 import BeautifulSoup
url = 'https://news.ycombinator.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# ストーリーは 'athing' クラスの行に含まれている
posts = soup.select('.athing')
for post in posts:
title_element = post.select_one('.titleline > a')
title = title_element.text
link = title_element['href']
print(f'Title: {title}
Link: {link}
---')
except Exception as e:
print(f'Scraping failed: {e}')いつ使うか
JavaScriptが最小限の静的HTMLページに最適。ブログ、ニュースサイト、シンプルなEコマース製品ページに理想的。
メリット
- ●最速の実行(ブラウザオーバーヘッドなし)
- ●最小限のリソース消費
- ●asyncioで簡単に並列化
- ●APIと静的ページに最適
制限事項
- ●JavaScriptを実行できない
- ●SPAや動的コンテンツで失敗
- ●複雑なアンチボットシステムで苦戦する可能性
コードでHacker Newsをスクレイピングする方法
Python + Requests
import requests
from bs4 import BeautifulSoup
url = 'https://news.ycombinator.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# ストーリーは 'athing' クラスの行に含まれている
posts = soup.select('.athing')
for post in posts:
title_element = post.select_one('.titleline > a')
title = title_element.text
link = title_element['href']
print(f'Title: {title}
Link: {link}
---')
except Exception as e:
print(f'Scraping failed: {e}')Python + Playwright
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('https://news.ycombinator.com/')
# テーブルの読み込みを待機
page.wait_for_selector('.athing')
# すべてのストーリーのタイトルとリンクを抽出
items = page.query_selector_all('.athing')
for item in items:
title_link = item.query_selector('.titleline > a')
if title_link:
print(title_link.inner_text(), title_link.get_attribute('href'))
browser.close()Python + Scrapy
import scrapy
class HackerNewsSpider(scrapy.Spider):
name = 'hn_spider'
start_urls = ['https://news.ycombinator.com/']
def parse(self, response):
# 投稿が含まれるクラス '.athing' をループ処理
for post in response.css('.athing'):
yield {
'id': post.attrib.get('id'),
'title': post.css('.titleline > a::text').get(),
'link': post.css('.titleline > a::attr(href)').get(),
}
# ページネーションの 'More' リンクを辿る
next_page = response.css('a.morelink::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)Node.js + Puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com/');
const results = await page.evaluate(() => {
// 各投稿アイテムを抽出
const items = Array.from(document.querySelectorAll('.athing'));
return items.map(item => ({
title: item.querySelector('.titleline > a').innerText,
url: item.querySelector('.titleline > a').href
}));
});
console.log(results);
await browser.close();
})();Hacker Newsデータで何ができるか
Hacker Newsデータからの実用的なアプリケーションとインサイトを探索してください。
スタートアップのトレンド調査
どの業界や製品タイプが最も頻繁に発表され、議論されているかを特定します。
実装方法:
- 1週単位で「Show HN」カテゴリをスクレイピングする。
- 2NLPを使用してスタートアップの説明をクレンジングし、分類する。
- 3コミュニティのアップボート数とコメントの感情分析に基づいてトレンドをランク付けする。
Automatioを使用してHacker Newsからデータを抽出し、コードを書かずにこれらのアプリケーションを構築しましょう。
Hacker Newsデータで何ができるか
- スタートアップのトレンド調査
どの業界や製品タイプが最も頻繁に発表され、議論されているかを特定します。
- 週単位で「Show HN」カテゴリをスクレイピングする。
- NLPを使用してスタートアップの説明をクレンジングし、分類する。
- コミュニティのアップボート数とコメントの感情分析に基づいてトレンドをランク付けする。
- 技術スカウティングと採用
専門的な月次の採用スレッドから求人情報と企業詳細を抽出します。
- 毎月の「Who is hiring(採用中)」スレッドのIDを監視する。
- 求人内容が含まれるすべてのトップレベルコメントをスクレイピングする。
- Rust、AI、Reactなどの特定の技術スタックをテキストからパースする。
- 競合インテリジェンス
コメント内での競合他社の言及を追跡し、世間の認識や不満を把握します。
- 特定のブランド名に対するキーワードベースのスクレイパーを設定する。
- 感情分析のためにユーザーコメントとタイムスタンプを抽出する。
- 競合他社と比較したブランドの健全性に関する週次レポートを生成する。
- コンテンツキュレーションの自動化
最も関連性の高いストーリーのみを含む、ノイズの少ない技術ニュースレターを作成します。
- 6時間ごとにフロントページをスクレイピングする。
- 200ポイントのしきい値を超える投稿をフィルタリングする。
- これらのリンクをTelegramボットやメールリストに自動配信する。
- ベンチャーキャピタルのリード獲得
コミュニティで大きな注目を集めている初期段階のスタートアップを発掘します。
- フロントページに掲載された「Show HN」の投稿を追跡する。
- 最初の4時間におけるアップボートの増加率を監視する。
- 投稿がバイラルな成長パターンを示した際にアナリストにアラートを出す。
ワークフローを強化する AI自動化
AutomatioはAIエージェント、ウェブ自動化、スマート統合のパワーを組み合わせ、より短時間でより多くのことを達成するお手伝いをします。
Hacker Newsスクレイピングのプロのヒント
Hacker Newsからデータを正常に抽出するための専門家のアドバイス。
HTMLパースの複雑さを避けるため、膨大な履歴データの収集には公式のFirebase APIを使用してください。
ボットであることを責任を持って明示し、即座のブロックを避けるために、常にカスタムUser-Agentを設定してください。
人間のブラウジング行動を模倣するため、リクエスト間に3〜7秒のランダムなスリープ間隔を実装してください。
最新のストーリーには /newest 、コミュニティの議論には /ask など、特定のサブディレクトリをターゲットにしてください。
フロントページを頻繁にスクレイピングする際、重複エントリを避けるために「Item ID」をプライマリキーとして保存してください。
レスポンス時間の短縮とレート制限のリスクを低減するため、オフピークの時間帯(UTCの夜間)にスクレイピングを行ってください。
関連 Web Scraping
Hacker Newsについてのよくある質問
Hacker Newsに関するよくある質問への回答を見つけてください



