質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1429閲覧

「SyntaxError: invalid syntax」の解決方法を知りたいです!【プログラミング初心者/Python/スクレイピング】

yamayamahi

総合スコア5

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2020/04/19 02:03

編集2020/04/19 13:57

##前提
プログラミング初心者です。
日経の人事ニュースをスクレイピングしたいのですが、
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)
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

全角空白文字が大量にあります。全部半角空白にしましょう。

投稿2020/04/19 02:16

編集2020/04/19 02:43
otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamayamahi

2020/04/19 03:35

ありがとうございます!全角部分を半角に直しました!
otn

2020/04/19 07:28

解決しましたよね?
yamayamahi

2020/04/19 13:51 編集

ありがとうございます、
yamayamahi

2020/04/19 13:50 編集

無事「SyntaxError: invalid syntax」が解決しました!
yamayamahi

2020/04/19 13:51 編集

その後、ValueError: 2 columns passed, passed data had 5 columns というエラーが出たのですが、こちらは最下部の記載を 下記に変更して無事に実行したいことを実現できました! df = pd.DataFrame(all_news[2:], columns = ["title","url","article_title","dd","detail"]) 初歩中の初歩の内容にも関わらずご指摘くださりありがとうございます!大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問