@ryohata1122 (Ryo Hatakeyama)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PythonでInvalid Syntaxエラーの理由が分からないので教えてほしいです。

代入部分での構文エラーの理由を教えていただけないでしょうか。

Pythonでスクレイピングをしています。
構文エラーの理由が分からないので、解決策が分かりません。
解決の方向性をご教示いただけないでしょうか。

発生している問題・エラー

    count = 1
    ^
SyntaxError: invalid syntax

該当するソースコード

import requests
import csv
import re
from bs4 import BeautifulSoup

headers = {
        "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
        }

#個別ページのURLを保存する配列
page_lists =[]

#スクレイピング結果を格納する配列
data = []

# 個別ページのURLを取得する関数
def scraping_url(url):
    response = requests.get(url, headers = headers)
    soup = BeautifulSoup(response.text, 'lxml')

    elements = soup.find_all(class_="list-rst__rst-name-target cpy-rst-name")
    for element in elements:
        page = element.get("href")
        page_lists.append(page)

# 個別ページで情報を取得する関数

def scraping_data(url):

    response = requests.get(url, headers = headers)
    soup = BeautifulSoup(response.text, 'lxml')

    drink = url + "dtlmenu/drink/"

    try:
        dict ={}
        店名 = soup.find(class_="display-name").get_text().replace( '\n' , '' ).replace(' ','')
        評価 = soup.find(class_="rdheader-rating__score-val-dtl").get_text()
        ジャンル = soup.find(class_="rdheader-subinfo__item-text").get_text().replace( '\n' , '' )
        電話番号 = soup.find(class_="rstinfo-table__tel-num").get_text()
        住所 = soup.find(class_="rstinfo-table__address").get_text()
        url = url

        # ドリンクメニューのスクレイピング

        response = requests.get(drink, headers = headers)
        soup = BeautifulSoup(response.text, 'lxml')
        ドリンク = soup.find(class_="rstdtl-menu-lst").get_text().replace( '\n' , '' ).replace(' ','')


        dict['店名'] = 店名
        dict['評価'] = 評価
        dict['ジャンル'] = ジャンル
        dict['電話番号'] = 電話番号
        dict['住所'] = 住所
        dict['url'] = url
        dict['ドリンク'] = ドリンク
    except:
        pass

    return dict

print ("スクレイピングします。")

#検索結果の個別ページURLを20ページ分保存

url = input('検索する駅の店舗一覧ページのURLを入力ください')
 = input('検索する駅を入力ください')
date = re.findall('\d{4}-\d{2}-\d{2}',str(datetime.datetime.now()).replace("-","_")

# 個別ページURL取得のスクレイピングを実行(20ページまで)
count = 1

while count < 21:
    scraping_url(url)
    response = requests.get(url, headers = headers)
    soup = BeautifulSoup(response.text, 'lxml')
    try:
        url = soup.find(class_="c-pagination__arrow c-pagination__arrow--next").get("href")
    except:
        count += 20
    count += 1

自分で試したこと

前後にスペースがないかのチェック

0 likes

5Answer

1つの前の文のかっこの数があっていないようです。

-date = re.findall('\d{4}-\d{2}-\d{2}',str(datetime.datetime.now()).replace("-","_")
+date = re.findall('\d{4}-\d{2}-\d{2}',str(datetime.datetime.now()).replace("-","_"))
2Like

Comments

  1. @ryohata1122

    Questioner

    ありがとうございます!解決しました。。。
    凡ミスですね。。

多分最初のcount = 1の部分でエラーになっている場合、その前の部分での構文が不正な可能性があり、importでrequestsやBeautifulSoupなどの記述があると思いますがその辺の記述も無いと判断ができないのでその辺のコードも共有可能でしたらお願いします!

1Like

Comments

  1. @ryohata1122

    Questioner

    ご丁寧にありがとうございます!
    該当するソースコードを編集いたしました。

    ご確認よろしくお願いします。

@YottyPG さんが回答していらっしゃるので解決済みだと思いますが、この辺のものでミスの内容を分かりやすくしたい場合、VS Codeなどのエディタが使えるようでしたらPylanceなどの拡張機能を入れて型などのチェックを有効にしておくとミスに気づきやすくなります!

たとえば今回のケースですとcount = 1のエラーの出ている(赤い波線の出ている)箇所にマウスオーバーするとExpected )(閉じ括弧が必要な箇所に別のものが来ている)といったようなエラーメッセージを確認することができます!

image.png

ちょっと古いですが参考記事貼っておきます :

1Like

This answer has been deleted for violation of our Terms of Service.

This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌