--- title: 'Todoリスト 共同通信のニュース集めの方法 - 新型コロナ(COVID-19)嫌儲対策本部' description: コロナ関連の共同通信のニュース記事のスクレイピング lang: ja-jp --- [新型コロナ(COVID-19)嫌儲対策本部](/@covid19-kenmo/SARS-Cov-2/) # Todoリスト 共同通信のニュース集めの方法 目次 [TOC] - [ ] TODOリスト - [x] ABC ## 共同通信のスクレイピングスクリプト 共同通信のRSSから新着の記事に指定のワードが含まれている記事のURLリストを作成するスクリプト https://github.com/everyday-stoke-phosphate/kyodo_scraping これを使って集めましょう。 ## スクリプト導入 Mac OS X編 ### 用意するもの - Python: モメンによるとpipenvで入れるのがナウいらしい。プロジェクトごとに仮想環境を用意する - gitクライアント: **GitUp** github使うならあると便利。軽くておすすめ。コミット、プッシュが楽 - その他: **Finder path** FinderからCommand+Tでターミナル開いたりパスの補完をしてくれたりとあると楽 ### Finder pathのインストール - [FinderPath公式サイト](http://bahoom.com/finderpath/) appフォルダに入れたら例によって「システム環境設定 > セキュリティとプライバシー > プライバシー > アクセシビリティ」と進み、「FinderPath.app」にチェックを入れて許可しておきます。 Tab/Return サジェスト補完&パスを開く 下矢印 補完リストを表示 Command + Return ファイルを開く Command + Up 親フォルダへ移動 Command + H ホームフォルダへ移動 Command + N 新しいウィンドウを開く Escape アドレスバーを閉じる Command + R リロード Command + T ターミナルで開く Shift + Command + F サーチモード Shift + Command + . 隠しファイルを表示、非表示 ### Homebrewのインストール 諸々を入れるのに使います。 ターミナルを開き、以下を実行します。 ```bash /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew -v ``` こんな感じになればOK ```bash > Homebrew 2.2.7 > Homebrew/homebrew-core (git revision 33cacc; last commit 2020-03-03) ``` ### Python、pipenvの導入 ターミナルを開き、以下を実行します ```- brew install python python3 -V brew install pipenv ``` python3のバージョンが表示されたでしょうか。 ### pipenvの使い方 pipenvはプロジェクトのフォルダごとにpythonの仮想環境を作り、それぞれパッケージを管理することができます。 まずはサンプルのプロジェクトをpipenvで構築してみましょう。 まず、作業用のディレクトリを作成して、そのディレクトリに移動。 ``` mkdir sample_pj cd sample_pj ``` 次に、下記のpipenvコマンドを実行します。 ``` pipenv --python 3 ``` これで、pipenvによって仮想環境が構築されました。 :::info :information_source: ここ大事 構築した仮想環境で作業するには、**仮想環境に入る**必要があります。それでは、次のコマンドでその環境に入ってみましょう。 ``` pipenv shell ... (sample_pj) $_ ``` プロンプトが”(sample_pj) $”となり、先ほど構築した仮想環境に入っていることが確認できます。 では、この状態でPythonのバージョンを確認してみましょう。 ``` (sample_pj) $ python -V # 環境から抜ける場合は (sample_pj) $ exit # 仮想環境を削除する場合、Pipfileがあるディレクトリで、 $ pipenv --rm あるいは、homeのpipfileを削除する必要があることも ``` ::: ### pipenvでパッケージ管理 $ pip install はpipenvで仮想環境を構築する場合は、$ pipenv install 〜と読み換える ### 任意のパッケージをインストール ```- インストール。バージョンにこだわらない場合、==以降は必要ない $ pipenv install "パッケージ名"=="バージョン" 任意のパッケージをアンインストール $ pipenv uninstall "パッケージ名" Pipfile.lockを生成 $ pipenv lock Pipfileに記載されたパッケージをアップデートして、Pipfile.lockを生成 $ pipenv update ``` ちなみに壊れてしまった時は、フォルダごと削除して作り直すとOKです。 ### スクレイピング環境用 これはSelenium用でニュースのスクレイピングに今回は必要ない。スクショの自動化などの場合に ``` brew tap homebrew/cask brew cask install chromedriver brew install chromedriver ``` /usr/local/bin/chromedriver に入ります ### GitUpの導入 GitUpはmacOS用に開発されたgitのGUIクライアントです。無くても良いが、githubを使うなら便利 - [GitUp公式サイト](https://gitup.co) - [GItUpの使い方](https://qiita.com/JotaroS/items/5042d2944cf0573f133e) #### コミット、プッシュする場合 command+1, command+2で画面を切り替えられます。 変更したファイルを選んでEnter、コメントを書いてコミット。command+1で戻り、Shift+command+P、Push BranchでOK ### いよいよ共同通信のスクレイピングスクリプトを使う GitUpから「ファイル」→「Clone from URL」(Shift+Command+N)で以下を取り込む https://github.com/everyday-stoke-phosphate/kyodo_scraping.git /kyodo_scraping/に保存したとする。 finderでこのフォルダを開き、command+Tでターミナルを開く。 以下を実行する ```bash- pipenv install --python 3 pipenv install scrapy pandas pyyaml feedparser ``` ```- 成功するとこんな感じ Usser:kyodo_scraping yst$ pipenv install --python 3 Using /usr/local/bin/python3 (3.7.6) to create virtualenv… ✔ Successfully created virtual environment! Installing feedparser… Adding feedparser to Pipfile's [packages]… ✔ Installation Succeeded Pipfile.lock (2f5808) out of date, updating to (a65489)… Locking [dev-packages] dependencies… Locking [packages] dependencies… ✔ Success! Updated Pipfile.lock (2f5808)! Installing dependencies from Pipfile.lock (2f5808)… 🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 31/31 — 00:00:08 ``` ## スクレイピングの実行 Mac編 まずは仮想環境に入り、main.pyを実行する。 ```- pipenv shell (kyodo_scraping) bash-3.2$ python main.py ``` RSSは最大で50件までしかニュースを保持しないので実行間隔を開けすぎると回収漏れが出てきます 15分程度を目安に今のところ運用しています 検索したキーワードが含まれているデータはURL_list_keyword_include.txtに保存されます 一方含まれていないデータはURL_list_keyword_not_include.txtに保存されています URLのみ保存されます ### 定期実行 cronというものを使えば定期的に実行することが可能です。 cronは"システム環境設定" の "セキュリティとプライバシー" で、"フルディスクアクセス" を Termnal に許可する必要があります。 次に、pipeenv shellで仮想環境に一回入り、絶対パスを確認します。 ``` bash-3.2$ . /Users/user-name/.local/share/virtualenvs/kyodo_scraping-53zU3azC/bin/activate ``` このようになるので.を含めてコピーしておきます。以下に書かれているのは15分ごとにcronで実行するものです。最初のパスは、スクリプトを保存してあるフォルダ、2つ目はさっき確認したパスに置き換えてください ``` */15 * * * * cd /Users/user-name/2019-nCov/kyodo_scraping/;. /Users/user-name/.local/share/virtualenvs/kyodo_scraping-53zU3azC/bin/activate;python main.py ``` これをコピーしたら「crontab -e」を実行します。エディタが開くので上をペースト、「:wq」と入力して終了します。 「crontab -l」を実行して、今コピペしたものがあればOK。 ## 抽出したサンプル :arrow_down: [jsonファイル](https://github.com/kenmomd/kyodo_scraping/blob/master/kyodo_articles/data/key_words_include.json) [JSON to Markdown Table](https://kdelmonte.github.io/json-to-markdown-table/) で変換する [JSON to CSV/Excel](http://convertcsv.com/json-to-csv.htm)で並び替えやソートも [Copy Table in Excel and Paste as a Markdown Table](https://thisdavej.com/copy-table-in-excel-and-paste-as-a-markdown-table/) | title | url | |---------------------------------|-----------------------------------------| | イベント自粛19日まで要請 新型コロナ年越え継続も | https://this.kiji.is/609726906900317281 | | 五輪採火式、無観客で実施 新型コロナで引き継ぎ式も | https://this.kiji.is/609750461873718369 | | 新型コロナ「長期化の可能性」と専門家会議 | https://this.kiji.is/609739616325141601 | | 中国武漢市の眼科医、相次ぎ死亡 新型コロナによる肺炎で | https://this.kiji.is/609706772697973857 | | イタリア、死者大幅増366人に 新型コロナ感染7千人、混乱拡大 | https://this.kiji.is/609707719298827361 | | フリーランス日額4100円検討 臨時休校で収入補償 | https://this.kiji.is/609737097044526177 | | 新型コロナの死者、4千人超える | https://this.kiji.is/609974349196936289 | | 米大統領、大規模な経済対策検討 新型コロナで、減税を視野 | https://this.kiji.is/609966489827722337 | | 中国ホテル倒壊、死者20人確認 新型コロナの隔離対象者 | https://this.kiji.is/609954153404187745 | | 東京空襲75年、最小規模の慰霊 新型コロナ感染防止、法要に影響 | https://this.kiji.is/609941212806808673 | | 新型コロナ特措法案を閣議決定 「緊急事態宣言」可能に | https://this.kiji.is/609900424795161697 | | 新型コロナ特措法案を閣議決定 | https://this.kiji.is/609897277225567329 | | 休校期間「設置者の判断を尊重」 文科相、目安提示はまだ先 | https://this.kiji.is/609927979146806369 | | 新型コロナ、世界の死者4千人超 感染は11万人、欧米で急拡大 | https://this.kiji.is/609978314285204577 | | ぜんそく薬で新型肺炎改善か 症例集め使用法検証へ | https://this.kiji.is/609990769410671713 | | コンビニ店組合が時短営業を要望 新型コロナで人手不足 | https://this.kiji.is/610025122489615457 | | 金正恩氏、訓練の「実戦化」指示 新型コロナで体制引き締めも | https://this.kiji.is/610033552745104481 | | 東海道新幹線、3月の利用半減 新型コロナ、在来線特急も | https://this.kiji.is/610033425846174817 | | 新型コロナ緊急対策第2弾を決定 | https://this.kiji.is/610033189061493857 | | 米の感染者700人超に 新型コロナ | https://this.kiji.is/610032524763169889 | | 首相がイベント自粛の延長要請 新型コロナ対策で | https://this.kiji.is/610031294051894369 | | トヨタ、レクサスを減産 新型コロナで中国需要減 | https://this.kiji.is/610039981296764001 | | 相模原市で新型コロナ感染の80代男性死亡 | https://this.kiji.is/610039480211981409 | | 首相がイベント自粛の延長要請 10日間程度、新型コロナ対策で | https://this.kiji.is/610031294051894369 | | 新型コロナ法案、11日に採決 与野党、緊急事態宣言巡り調整 | https://this.kiji.is/610045884455208033 | | なでしこリーグの開幕延期 新型コロナの影響で | https://this.kiji.is/610042662467634273 | | 親の7割が運動不足を心配 感染対策の一斉休校でNPO調査 | https://this.kiji.is/610048900324164705 | | 政府、休校中の給食費返還へ コロナ対策、フリーランスも補償 | https://this.kiji.is/610050149411390561 | | メルカリ、マスク出品禁止 13日から、新型コロナで一律 | https://this.kiji.is/610071618542994529 | | 女子プロ野球の開幕延期 新型コロナの影響で | https://this.kiji.is/610067024461923425 | | メルカリ、マスク出品禁止 13日から、新型コロナで一律 | https://this.kiji.is/610071618542994529 | | 新型コロナ、世界の死者4千人超 WHO、感染防止諦め警戒 | https://this.kiji.is/609978314285204577 | | 新型コロナで「景気腰折れ」懸念 政府諮問会議で民間議員 | https://this.kiji.is/610084012838667361 | | 新型コロナ国内新たに23人感染 神奈川で1人死亡、17人に | https://this.kiji.is/610087564268192865 | | 新型コロナ、国内新たに45人 死亡は神奈川で1人増え17人に | https://this.kiji.is/610087564268192865 | :::info ### メインページより引っ越し 4/13 整理のため、以下メインページから引っ越し 古い情報の可能性 ::: #### 共同通信 - 暫定共同通信のニュースの掘り出しかた(PC) 1. https://cms.nordot.jp/search/allstories にアクセス 2. 検索欄に 共同のunit-id 指定 ニュースが何日以降に配信されたかと何日以前に配信されたかを指定し検索   例 共同通信で作成日時2020年1月1日0::00(jst)以降からその日に作成された記事を検索する場合   unit_id:39166665832988672 created_at:<=2020-01-02T00:00:00+09:00 created_at:>=2020-01-01T00:00:00+09:00   を検索欄に入力 3. 新型コロナ(新型肝炎)の検索結果を保存or 新しいタブで開き URLをメモ 4. ブックマークレットなどを使用し魚拓(出来る限り3サイト分)を作成 5. ニュース貼り付けページに整形の上貼り付けて完了 - 暫定共同通信のニュースの掘り出しかた(Android) 最大で1000件までしかニュースをためられないので注意 それ以降はリストから消滅するのでPCで行う必要がある またクリップボードの履歴が取得できないOSの場合は 1. Feeder(RSS用のソフト) aNdClip https://f-droid.org/packages/com.tengu.sharetoclipboard/をダウンロード 2. 共同のRSSを購読(Yahooを使わない公式のRSSのURLが見つからないので見つけ次第差しかえておいてください) 3. URL https://this.kiji.is/-/feed/posts/rss?source_id=603806532955636833 4. 新型コロナ(新型肝炎)のURLをコピー 5. aNdClipに保存されたクリップボード履歴をエクスポート 6. ブックマークレットを利用し魚拓を作成 7. ニュース貼り付けページに整形の上貼り付けて完了 **[共同通信作業進行表](https://hackmd.io/455n8-c8QOqCQ1tXFEsB3A)** #### 時事通信 - 時事通信のニュースの掘り出しかた 時事通信のサイトの検索などからちまちま掘り出すしかないと思う やり方があったら追記して 記事のURLは `https://www.jiji.com/jc/article?k=` yyyyMMdd(記事ナンバー5ケタ) たとえば2020年1月25日の記事なら `2020012500015` でこんな感じのURLになる `https://www.jiji.com/jc/article?k=2020012500015` 存在しないなら404が返ってくる - 記事タイトルXpath ```xpath= /html/body/div[@id='Contents']/div[@id='ContentsInner']/div[@id='Main']/div[@class='MainInner Individual']/article/div[@class='ArticleTitle']/h1 ``` - 記事日付Xpath ```xpath= /html/body/div[@id='Contents']/div[@id='ContentsInner']/div[@id='Main']/div[@class='MainInner Individual']/article/div[@class='ArticleTitle']/div[@class='ArticleData clearfix']/p[@class='ArticleTitleData'] ``` もしくは ```xpath= /html/head/meta[contains(@name, 'pubdate')]/@content ``` 形式は2020-02-28T02:09:00+09:00 - 記事説明(ヘッダー) ```xpath= /html/head/meta[contains(@name, 'description')]/@content ``` - 記事タイトル(ヘッダー) ```xpath= /html/head/meta[contains(@name, 'title')]/@content ``` もしくは ```xpath= /html/head/title ``` - 写真ニュースは不明 `https://www.jiji.com/jc/p?id=yyyyMMdd` `https://www.jiji.com/jc/p?id=yyyyMMddhhmmss-(10ケタの写真番号)` 写真番号は(内部的には)連番?でアップされてるとは限らない? 実例`https://www.jiji.com/jc/p?id=20200228111052-0034117765` ###### tags: `Documentation` `ToDo`