ChatGPT君と協力してエラーを乗り越えてプログラムを作る
概要
仕事でPythonのScrapyを使うことになりそうなので、スクレイピングのプログラムを作ってみることにした。
せっかくだから、凄腕エンジニアのChatGPT君に相談しながらScrapyの使い方を勉強した。
ChatGPT
アカウント登録しよう!!
早速プログラムの作成を依頼する
プロンプト
Yahoo!ニュースの経済トピックス一覧をスクレイピングをするプログラムを作成してください。
条件は下記の通りです。
・https://news.yahoo.co.jp/topics/business
・Python 3.9
・Scrapy
・記事のURLとタイトル
・全てのページ
回答
import scrapy class YahooNewsSpider(scrapy.Spider): name = 'yahoo_news' allowed_domains = ['news.yahoo.co.jp'] start_urls = ['https://news.yahoo.co.jp/topics/business'] def parse(self, response): for article in response.css('.topicsListItem'): title = article.css('.topicsListItem_title a::text').get() url = article.css('.topicsListItem_title a::attr(href)').get() yield {'title': title, 'url': url} next_page = response.css('.pagination .next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse)
手直し
少し間違っている箇所があるので、そこは直接手作業で直します。
- .topicListItem → .newsFeed_item
- .topicListItem_title a::text → .newFeed_item_title::text
- .topicListItem_title a::attr(href) → .newsFeed_item_link::attr(href)
- .pagination .next a::attr(href) → .pagination_item-next a::attr(href)
エラーが発生した
scrapy runspider yahoo_news.py -o articles.csv
を実行したらエラーとなってしまった。
エラーの解決もChatGPT君に相談しよう。
ModuleNotFoundError: No module named '_lzma'
普通に調べると、xz
のインストールやpyenv
でのpython再インストールで解決する事案が多いらしい。
これで解決することができました。
スクレイピング結果
Yahoo!ニュース経済トピックの全記事61件のデータを取得することができました!!
「,」は広告でタイトルとかは無いのでコンマになっているようです。
また、scrapy runspider yahoo_news.py -o articles.csv
によるファイルへの書き出しは、上書きではなく行が追加されていく仕様でした。
title,url ぬいぐるみに変化 楽しむ大人増,https://news.yahoo.co.jp/pickup/6455274 宿泊客が悪意の口コミ 現場の苦悩,https://news.yahoo.co.jp/pickup/6455267 訪日客増 タクシー捕まらない問題,https://news.yahoo.co.jp/pickup/6455259 日米韓台 半導体巡り協議していた,https://news.yahoo.co.jp/pickup/6455255 ミキハウス好調 24万円の子供服も,https://news.yahoo.co.jp/pickup/6455252 , 外国クルーズ来航 コロナ前水準へ,https://news.yahoo.co.jp/pickup/6455218 路線バスの「最前席封鎖」今後は,https://news.yahoo.co.jp/pickup/6455191 混乱招く?根付かない「Rサイズ」,https://news.yahoo.co.jp/pickup/6455149 「ロシア産キャビア」神話と虚像,https://news.yahoo.co.jp/pickup/6455147 ランドセル高額化 サブスクに商機,https://news.yahoo.co.jp/pickup/6455145 , 卵メニュー相次ぎ停止 外食悲鳴,https://news.yahoo.co.jp/pickup/6455143 卵メニュー販売停止 異変いつまで,https://news.yahoo.co.jp/pickup/6455134 需要鈍化でコロナ後模索 米製薬,https://news.yahoo.co.jp/pickup/6455128 インボイス制度 声優から反対の声,https://news.yahoo.co.jp/pickup/6455098 JAL便Uターン 空港「門限」とは,https://news.yahoo.co.jp/pickup/6455063 , のぞみグリーン車2席使用 販売へ,https://news.yahoo.co.jp/pickup/6455043 電通G社長 談合の法人責任認める,https://news.yahoo.co.jp/pickup/6455042 NHK 郵便法違反で再び行政指導,https://news.yahoo.co.jp/pickup/6455033 「黒い吉野家」メニューにも戦略,https://news.yahoo.co.jp/pickup/6455026 電力大手5社の4月値上げ 先送りへ,https://news.yahoo.co.jp/pickup/6455000 , いすゞ 3車種11.8万台をリコール,https://news.yahoo.co.jp/pickup/6454998 国内の広告費 15年ぶり最高更新,https://news.yahoo.co.jp/pickup/6454994 湯の交換年2回だけ 旅館認め謝罪,https://news.yahoo.co.jp/pickup/6454988 関西電力 4月末まで営業活動自粛,https://news.yahoo.co.jp/pickup/6454987 「かっぱ寿司」運営側が無罪主張,https://news.yahoo.co.jp/pickup/6454977 新たな迷惑動画 スシロー側対処へ,https://news.yahoo.co.jp/pickup/6454975 フジテック 社外取締役3人解任,https://news.yahoo.co.jp/pickup/6454971 電力値上げ 首相が厳格査定を指示,https://news.yahoo.co.jp/pickup/6454958 植田氏「日銀の金融政策は適切」,https://news.yahoo.co.jp/pickup/6454957 1月の消費者物価 41年ぶり上げ幅,https://news.yahoo.co.jp/pickup/6454944 , シャンシャン 経済効果600億円か,https://news.yahoo.co.jp/pickup/6454940 米大統領 世銀総裁にバンガ氏指名,https://news.yahoo.co.jp/pickup/6454935 ワークマン アパレルに本格参入へ,https://news.yahoo.co.jp/pickup/6454892 超電導リニア 米国でJR東海がPR,https://news.yahoo.co.jp/pickup/6454890 トラック事故死 業界の問題と対策,https://news.yahoo.co.jp/pickup/6454875 , 携帯は強制解約 通信困窮者の困難,https://news.yahoo.co.jp/pickup/6454870 「住みたい街」都心回帰の流れ,https://news.yahoo.co.jp/pickup/6454853 みずほ銀 初任給5.5万円上げ方針,https://news.yahoo.co.jp/pickup/6454837 年末の東海道新幹線停電 原因発表,https://news.yahoo.co.jp/pickup/6454834 五輪談合 電通・博報堂など立件へ,https://news.yahoo.co.jp/pickup/6454809 , イワシ豊漁 1匹10円で売る店も,https://news.yahoo.co.jp/pickup/6454797 ホンダがベア1万円超の満額回答,https://news.yahoo.co.jp/pickup/6454801 つくばエクスプレス レール破断か,https://news.yahoo.co.jp/pickup/6454795 ロッテリア買収 ゼンショーの狙い,https://news.yahoo.co.jp/pickup/6454776 盗まれた高級車どこに 追った男性,https://news.yahoo.co.jp/pickup/6454766 , ゼンショー バーガーで苦い経験も,https://news.yahoo.co.jp/pickup/6454762 トヨタ 春闘で3年連続の満額回答,https://news.yahoo.co.jp/pickup/6454759 カレンダーに昭和98年 なぜ併記,https://news.yahoo.co.jp/pickup/6454753 春闘 トヨタが初交渉で満額回答,https://news.yahoo.co.jp/pickup/6454754 賃上げ表明続々 人材確保に危機感,https://news.yahoo.co.jp/pickup/6454741 米マッキンゼー 約2000人を削減へ,https://news.yahoo.co.jp/pickup/6454724 加熱式メビウス値下げへ 500円に,https://news.yahoo.co.jp/pickup/6454704 関電に法令順守の緊急指示 経産省,https://news.yahoo.co.jp/pickup/6454690 FOREVER21が再上陸 脱ファスト,https://news.yahoo.co.jp/pickup/6454685 国際郵便「航空書簡」9月末に終了,https://news.yahoo.co.jp/pickup/6454682 長期金利0.505%に 変動幅上限超え,https://news.yahoo.co.jp/pickup/6454670 放置多数? 空港の駐車場どう対応,https://news.yahoo.co.jp/pickup/6454657 マルハニチロ 4月にサバ缶値上げ,https://news.yahoo.co.jp/pickup/6454645 高年収層 税負担と「子育て罰」,https://news.yahoo.co.jp/pickup/6454644 迷惑動画 どうなる回転すし文化,https://news.yahoo.co.jp/pickup/6454629 賃上げでも人手不足「年収の壁」,https://news.yahoo.co.jp/pickup/6454623