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

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

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

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

selenium

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

Q&A

解決済

1回答

1142閲覧

seleniumとBeautihulSoupを用いて社会科のキーワードとそのリンク先の説明を取得したい

YummyD

総合スコア5

スクレイピング

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

selenium

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

0グッド

0クリップ

投稿2020/04/22 13:45

編集2020/04/23 13:38

python3でseleniumとbs4を使用 使用機材はmac

 
seleniumとbs4を用いてスクレイピングをしています。社会科のキーワード集作成のためにキーワードとそのリンク先の説明を取得したいです。
イメージ説明
ここの青文字の部分がリンクになっており、その先に各用語の説明が書いています。

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

Traceback (most recent call last): File "Selelelen.py", line 1, in <module> import requests, bs4, sys File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/requests/__init__.py", line 43, in <module> import urllib3 File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/__init__.py", line 7, in <module> from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 11, in <module> from .exceptions import ( File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/exceptions.py", line 2, in <module> from .packages.six.moves.http_client import IncompleteRead as httplib_IncompleteRead File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 668, in _load_unlocked File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/packages/six.py", line 199, in load_module mod = mod._resolve() File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/packages/six.py", line 113, in _resolve return _import_module(self.mod) File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/urllib3/packages/six.py", line 82, in _import_module __import__(name) File "/Users/****/opt/anaconda3/lib/python3.7/http/client.py", line 72, in <module> import email.message File "/Users/****/opt/anaconda3/lib/python3.7/email/message.py", line 10, in <module> import uu File "/Users/****/Desktop/Program/uu.py", line 1, in <module> import requests, sys, webbrowser, bs4 File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/bs4/__init__.py", line 31, in <module> from .builder import builder_registry, ParserRejectedMarkup File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/bs4/builder/__init__.py", line 475, in <module> from . import _html5lib File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/bs4/builder/_html5lib.py", line 20, in <module> import html5lib File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/html5lib/__init__.py", line 28, in <module> from .serializer import serialize File "/Users/****/opt/anaconda3/lib/python3.7/site-packages/html5lib/serializer.py", line 11, in <module> from xml.sax.saxutils import escape File "/Users/****/opt/anaconda3/lib/python3.7/xml/sax/saxutils.py", line 6, in <module> import os, urllib.parse, urllib.request File "/Users/****/opt/anaconda3/lib/python3.7/urllib/request.py", line 1351, in <module> if hasattr(http.client, 'HTTPSConnection'): AttributeError: module 'http' has no attribute 'client'

該当のソースコード

python

1import requests, bs4, sys 2from selenium import webdriver 3from time import sleep 4import urllib 5urllib.request.http.client 6 7 8print('Next...') 9driver = webdriver.Firefox(executable_path='/Users/****/opt/anaconda3/bin/geckodriver') 10url = 'http://ssd.cswiki.jp/index.php?%E6%AD%B4%E5%8F%B2%EF%BC%A1%E3%83%A9%E3%83%B3%E3%82%AF' 11driver.get(url) 12sleep(10) 13 14explain_urls = [] 15elems_explain_url = driver.find_elements_by_css_selector('#body p a') 16for elem_explain_url in elems_explain_url: 17 explain_url = elem_explain_url.get_attribute('href') 18 explain_urls.append(explain_url) 19 for explain_url_list in explain_urls: 20 driver.get(explain_url_list) 21 time.sleep(30) 22 driver.back() 23 24

試したこと

初めは
NameError: name 'explain_urls' is not defined
というエラーメッセージが出たので
explain_url = elem_explain_url.get_attribute('href')
から
explain_urls = elem_explain_url.get_attribute('href')
に変更しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ちゃんと読んでませんが、一目で分かる範囲で、スペルミスがあります。

Python

1explain_urls = elem_explain_url.get_attribute('href')

は、

Python

1explain_url = elem_explain_url.get_attribute('href')

また、

Python

1explain_url = []

は、

Python

1explain_urls = []

ですね。

投稿2020/04/22 13:58

編集2020/04/22 14:01
otn

総合スコア84557

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

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

YummyD

2020/04/22 14:03

回答ありがとうございます。 スペルミスを直してみましたが同様のエラーメッセージが出てしまいます...
otn

2020/04/22 14:04

まだ間違えていると思うので、修正後のコードと、エラーメッセージを質問に追記してください。
YummyD

2020/04/22 14:10

修正後のコードに変更しました。 エラーメッセージは変わらずです。
otn

2020/04/22 14:41

コードとエラーメッセージが矛盾するので、どちらかが合ってません。 あと、sleep(2000)って、「約33分待つ」ですが、間違えてませんか?
otn

2020/04/22 14:46

今のエラーを通り過ぎてからの話ですが、 中見てみると、ページ遷移しているのに、ページ遷移前のエレメントを参照しているので多分駄目ですね。 最初にURLを全部取得してから、ページ遷移しないと。
YummyD

2020/04/22 14:50

すいません。 エラーメッセージを完全に間違えてました。 今修正を入れます。 sleepの秒数も打つ間違えです。修正します。
otn

2020/04/22 15:08

まだ、エラーメッセージがおかしいです。自分でもエラーメッセージを読んでますか?
YummyD

2020/04/22 15:32

もう一度確認しましたが、このエラーメッセージが出てきます。
otn

2020/04/22 15:33

どの行ですか??
YummyD

2020/04/22 16:10

エラーメッセージ全文に変更しました。
otn

2020/04/22 23:46

なんと、importでのエラーですか。 前回実行時から何か設定まわりで作業してますよね。それが原因でしょう。 requestsをインストールし直しては?
YummyD

2020/04/23 11:47

再インストール後もエラーが出て来てしまいました。 上記の内容は変更済みです。
otn

2020/04/23 11:58

すでに、プログラムの中身は関係無いです。 python -c "import requests" だけでも同じエラーになりますよね? 何をしたか思い出しましょう。
YummyD

2020/04/23 13:12 編集

アンインストール後、pip3で再インストールし python -c "import requests"を実行すると Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'requests' が返ってきて、 pipで再インストールすると、上記してあるようなエラーメッセージが返ってくるのは、 何か関係あるのでしょうか
otn

2020/04/24 09:56

おそらく、Python環境が、自分で理解も説明もできない状態になっていると思いますので、全部消してやり直すのが良いと思います。自分で理解も説明もできない状態にならないように注意しながら。 その上で、プログラムについては、私が 2020/04/22 23:46 に書いたような修正を行う必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問