クロールの練習で、好きな単語でGoogleニュースを検索して、CSVに保存するコードを書きました。
パーセンドエンコードが最初はわからなくてちょっと苦戦しました。
RSSフィードのクロールをするコードなので、RSSフィードがあるサイトなら、Googleニュース以外でも使い回しできると思います。
import feedparser
import urllib.parse
import csv
# 取得したいキーワードを入れる
keyword = ''
# keyword変数に入れた単語をパーセンドエンコードに変換
keyword_quote = urllib.parse.quote(keyword)
# 日本語をパーセンドエンコードに変換済みのURLを自動で作成してurl変数に格納
url = f'https://news.google.com/rss/search?amp;hl=ja&gl=JP&q={keyword_quote}&hl=ja&gl=JP&ceid=JP:ja'
# 一回動かしたらセッション切れるまではデータがd変数に入ったままになるのでコメントアウトでトライ&エラーできる
# d = feedparser.parse(url)
news = []
for i, entry in enumerate(d.entries, 1):
# newsリストに辞書としてほしい情報を格納
news.append({"id": i, "title": entry.title, "source": entry.source.title,"url": entry.link, "published": entry.published })
# 再利用しやすいようにCSVへ書き込み。Google colabで動かすと、同一ディレクトリ内にcsvファイルが生成される。
with open(f"{keyword}.csv", "w", newline="") as f:
writer = csv.DictWriter(f, ["id", "title", "source", "url", 'published'])
writer.writeheader()
writer.writerows(news)
# 処理が終わったのがわかるためのメッセージ
print('保存できたよ')
0 件のコメント:
コメントを投稿