##前提
プログラミング初心者です。
日経の人事ニュースをスクレイピングしたいのですが、
SyntaxError: invalid syntax エラーが出てしまうため、
解決方法を教えていただいても良いでしょうか?
##聞きたいこと
「SyntaxError: invalid syntax」の解決方法
##実現したいこと
日経の異動情報の
記事一覧ページ( https://www.nikkei.com/news/jinji/hatsurei/ )の各記事(30記事/ページ)に
上から順に一つずつアクセスし、必要情報(企業名・更新日・詳細の3項目)をスクレイピングする操作を、
一覧ページの1ページ目から4ページ目まで(4ページ×30記事=120記事)実行したい。
##該当のサイトURL
▼記事一覧ページ
https://www.nikkei.com/news/jinji/hatsurei/
▼各記事の例
https://www.nikkei.com/article/DGXMZO58199080X10C20A4EA4000/
##エラーメッセージ
SyntaxError: invalid syntax
該当のソースコード
python
1import requests 2from bs4 import BeautifulSoup 3import time 4import numpy as np 5import pandas as pd 6 7all_news = [] 8 9 10for num in range(0,3): 11 12 #「記事一覧ページのURL」を定義 13 if num == 0: 14 url = "https://www.nikkei.com/news/jinji/hatsurei" 15 else: 16 url = "https://www.nikkei.com/news/jinji/hatsurei/?bn="+str(num*30+1) 17 print(url) 18 19 #BeautifulSoup(スクレイピングツール)を使ってsoupを定義 20 soup = BeautifulSoup(requests.get(url).content, 'html.parser') 21 #「m-articleTitle_text」クラスのh3を全て見つけて、「titles」として定義 22 titles = soup.find_all('h3', {'class': 'm-articleTitle_text'}) 23 24 for igt in titles: 25 #news_listの箱を作る 26 news_list = [] 27 28 #title_とurl_をそれぞれ定義 29 title_ = igt.text 30 url_ = "https://www.nikkei.com" + igt.a.get("href") 31 news_list.append(title_) 32 news_list.append(url_) 33 34 #記事一覧ページから、各記事(url_)にアクセスし、必要情報を取ってきて、news_listに追加 35 soup = BeautifulSoup(requests.get(url_).content, 'html.parser') 36 37 #必要情報① 企業名:article_title_ 38 article_title = soup.find_all('h1', {'class': 'cmn-article_title cmn-clearfix'}) 39 for igt in article_title: 40 article_title_ = igt.text 41 news_list.append(article_title_) 42 43 #必要情報② 日付:dd_ 44 dd = soup.find_all('dd', {'class': 'cmnc-publish'}) 45 for igt in dd: 46 dd_ = igt.text 47 news_list.append(dd_) 48 49 #必要情報③ 詳細:detail_ 50 detail = soup.find_all('ul', {'class': 'cmn-announce_personnel JSID_key_fonttxt m-streamer_medium'}) 51 for igt in detail: 52 detail_ = igt.text 53 news_list.append(detail_) 54 55 56 #出来上がったnews_listをall_newsの箱に代入していく 57 all_news.append(news_list) 58 time.sleep(1) 59 60print(all_news) 61 62#DataFrame 63df = pd.DataFrame(all_news[2:], columns = ["title","url"]) 64df.to_csv("nikkei_idou_news.csv",index = None)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/19 03:35
2020/04/19 07:28
2020/04/19 13:51 編集
2020/04/19 13:50 編集
2020/04/19 13:51 編集