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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

1499閲覧

python3 スクレイピング 構文エラー

yujin5296

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2019/07/20 06:51

前提・実現したいこと

【LINE Bot x AI】顔認識を利用したAI Bot「スケベ博士」をPythonとGoogle Apps Scriptで作ろう
上記のリンクで紹介している機能を実装しようとしています

pythonのpandasというライブラリを使用して
AV女優一覧のページで公開しているAV女優のサムネイルと名前のデータを
スクレイピングし、csv形式で取得を試みています。

構文エラーについて検索しても、特に問題が見つけられなかったため
知見を持っている方に下記のソースコードに間違いがあるのか
それとも環境に問題がありそうなのかを判断していただければと
思っています。

発生している問題・エラーメッセージ

○○○$ python3 DMM_AVactor.py File "DMM_AVactor.py", line 40 except Exception as e: ^ SyntaxError: invalid syntax

該当のソースコード

from selenium import webdriver import pandas """*************************************** もろもろの設定 ***************************************""" browser = '/usr/local/bin/chromedriver' df = pandas.read_csv('default.csv', index_col=0) #女優名・女優の画像URLが列に入っている url = "http://wav.tv/actresses/" #エロサイトの女優リストのページ """****************************** CSS SELECTORの設定 ******************************""" PAGER_NEXT = "a.m-pagination--next.is-last.step" #次へボタン POSTS = "div.m-actress-wrap" ACTRESS_NAME = ".m-actress--title" #女優名 IMAGE = ".m-actress--thumbnail-img img" #サムネイル画像のURL、srcで画像ファイルを取得できる """*************************************** 実行部分 ***************************************""" browser.get(url) while True: #continue until getting the last page #5-1 if len(browser.find_elements_by_css_selector(PAGER_NEXT)) > 0: print("Starting to get posts...") posts = browser.find_elements_by_css_selector(POSTS) #ページ内のタイトル複数 print (len(posts)) for post in posts: try: name = post.find_element_by_css_selector(ACTRESS_NAME).text print(name) thumnailURL = post.find_element_by_css_selector(IMAGE).get_attribute("src") print(thumnailURL) se = pandas.Series([name,thumnailURL],["name", "image"]) df = df.append(se, ignore_index=True) except Exception as e: print(e) btn = browser.find_element_by_css_selector(PAGER_NEXT).get_attribute("href") print("next url:{}".format(btn)) browser.get(btn) print("Moving to next page......") else: print("no pager exist anymore") break #6 print("Finished Scraping. Writing CSV.......") df.to_csv("output.csv") print("DONE")

試したこと

selenium、webdriver、pandas等は一通りインストール済みです

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

全角スペースが入ってりするとたまにそういうのあるので、前後の行を削除して、手動で打ってみて挙動を確認してみては如何でしょうか。
パッとみた限り、その行に関して間違いはなさそうです

投稿2019/07/20 07:30

bamboo-nova

総合スコア1408

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

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

yujin5296

2019/07/20 09:37

回答ありがとうございます インデントや改行を修正した結果、 上記のエラーは出なくなりましたが 下記のようなエラーが発生しました。 検索など調査はしましたがいまいちわからずじまいです ``` Traceback (most recent call last): File "DMM_AVactor.py", line 24, in <module> browser.get(url) AttributeError: 'str' object has no attribute 'get' ``` エラーメッセージの意図もつかめておりません ご教示いただければ幸いです
bamboo-nova

2019/07/20 10:01

エラーの内容ですが、文字列にはgetという属性は持っていないというエラー内容で、要はURLの文字列だと.getは使えませんということです。 このような表記をする必要があると思います(サイトにも記載されています)。 # Chromeのドライバーを起動 webdriver.Chrome('/usr/local/bin/chromedriver')
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問