- 目的
- 5chのカテゴリーURLを取得して中の記事を取得する
- 中の記事はまだ取れてない(今後の課題)
- 5chのカテゴリーURLを取得して中の記事を取得する
- 結論
- 以下のスクリプトを実行するとカテゴリー名とカテゴリーURLのjsonファイルが出力される
- 実行するスクリプト
#!/usr/bin/python # -*- coding: utf-8 -*- import requests import json # 5chのトップのURLを指定 URL = 'https://www2.5ch.net/5ch.html' # 一時ファイルの出力先パス FILE_OUTPUT_PATH = '!!パスを指定' # jsonファイルの出力先 OUTPUT_FILE_PATH = '!!パスを指定' # 取得結果を出力する辞書配列を定義 result = {} # post getでトップページの情報を取得する response = requests.get(URL) response_list = response.text # 一旦ファイルを書き出す # f = open(FILE_OUTPUT_PATH, 'w') # f.write(response_list) # f.close() # 書き出したファイルを読み込んで1行ずつ処理する with open(FILE_OUTPUT_PATH) as read_file: for data in read_file: # dataの例 # ノートPC
# URL部分以外の場合はcontinueする if 'A HREF' not in data: continue # URL部分の場合 # カテゴリーの名前を取得する category_name = data.split('>')[1].split('<')[0] # 例 # バスケット # テニス # バレーボール # URL部分だけ取得する cotegory_url = data.split('"')[1] # 例 # https://rio2016.5ch.net/kokusai/ # 辞書配列に入れる result[category_name] = cotegory_url with open(OUTPUT_FILE_PATH, 'w') as f: json.dump(result, f, indent=2, ensure_ascii=False) # カテゴリーURLごとに処理する # TODO 後ほどやる - 実行結果
{ "5chの入り口": "https://www.5ch.net/", "5ch総合案内": "https://info.5ch.net/", "5chプレミアム浪人": "https://premium.5ch.net/", "検索": "https://find.5ch.net/", "超スレタイ検索": "https://dig.5ch.net/", "5ch投稿数": "https://stat.5ch.net/SPARROW", "お絵描き観測所": "https://o.5ch.net/", "スマホメニュー": "https://itest.5ch.net/", "過去ログ倉庫": "https://www.5ch.net/kakolog.html", "地震headline": "https://headline.5ch.net/bbynamazu/", "地震速報": "https://egg.5ch.net/namazuplus/", "臨時地震": "https://mao.5ch.net/eq/", "臨時地震+": "https://sora.5ch.net/eqplus/", "緊急自然災害": "https://rio2016.5ch.net/lifeline/", "プロ野球": "https://rio2016.5ch.net/base/", "海外サッカー": "https://kizuna.5ch.net/football/", "国内サッカー": "https://kizuna.5ch.net/soccer/", "日本代表蹴球": "https://mevius.5ch.net/eleven/", "ニュース速報+": "https://asahi.5ch.net/newsplus/", "芸スポ速報+": "https://hayabusa9.5ch.net/mnewsplus/" ~~~~~~~~~ }