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

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

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

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

Q&A

解決済

1回答

1959閲覧

pythonでimportがうまくいかない【Webスクレイピング】

YamamotoHiroki

総合スコア57

Python

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

0グッド

1クリップ

投稿2017/07/15 19:12

Webスクレイピングがしたくて初めてpythonを触るのですが
http://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406
を参考にpythonの実行環境を整えpipをDLしファイルを実行してみたのですが
どうもファイルの置く場所が間違っているのかバージョンが違うことからうまくいっていないのかわかりません

日経新聞のサイトからタイトルを取ってくるというものです。
ファイル名はgetNikkeiWebPageTitle.pyとしています。

上記サイトではurllib2を使っているようでしたが私はurllib3を使いました。
(自分のローカルフォルダにurllib3しか見つけることができなかったため)
少々仕様がかわっているようです。

実行すると

C:\Users\MyName\Desktop\Lib\site-packages\pip\_vendor\requests\packages>python getNikkeiWebPageTitle.py Traceback (most recent call last): File "getNikkeiWebPageTitle.py", line 9, in <module> html = urllib3.urlopen(url) AttributeError: module 'urllib3' has no attribute 'urlopen'

となってしまいます。

urlopenという関数をurllib3は持っていません
という意味でしょうか。

どこに問題がありそうですか?

getNikkeiWebPageTitle.pyファイルは
C:\Users\MyName\Desktop\Lib\site-packages\pip_vendor\requests\packages
に置いて実行しています。(あっているか不安)

環境:Windows10,Python 3.6.2rc2,pip 9.0.1
以下実行ファイルです。

getNikkeiWebPageTitle.py

1# coding: UTF-8 2import urllib3 3from bs4 import BeautifulSoup 4 5# アクセスするURL 6url = "http://www.nikkei.com/" 7 8# URLにアクセスする htmlが帰ってくる → <html><head><title>経済、株価、ビジネス、政治のニュース:日経電子版</title></head><body.... 9html = urllib3.urlopen(url) 10 11# htmlをBeautifulSoupで扱う 12soup = BeautifulSoup(html, "html.parser") 13 14# タイトル要素を取得する → <title>経済、株価、ビジネス、政治のニュース:日経電子版</title> 15title_tag = soup.title 16 17# 要素の文字列を取得する → 経済、株価、ビジネス、政治のニュース:日経電子版 18title = title_tag.string 19 20# タイトル要素を出力 21print(title_tag) 22 23# タイトルを文字列を出力 24print(title) 25

具体的な質問ができなくて申し訳ありませんがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

urlopenという関数をurllib3は持っていません
という意味でしょうか。

その通りです。
https://pypi.python.org/pypi/urllib3
ドキュメントを読みましょう。

http = urllib3.PoolManager() r = http.request('GET', 'http://www.nikkei.com/') soup = BeautifulSoup(r.data, 'html.parser')

プールを作成してrequestでhtmlを取得できます。
ただし特別なことをしないなら、requestsを使った方が簡単に記述できて良いです。
以下requestsとurllib3比較。
どちらでも、きちんとスクレイピングできていることを確認しました。

# -*- coding: utf-8 -*- from bs4 import BeautifulSoup import requests import urllib3 url = "http://www.nikkei.com/" # requestsを使うならこっち r = requests.get(url) # urllib3を使うならこっち http = urllib3.PoolManager() r = http.request('GET', url) soup = BeautifulSoup(r.data, 'html.parser') # タイトル要素を取得する → <title>経済、株価、ビジネス、政治のニュース:日経電子版</title> title_tag = soup.title # 要素の文字列を取得する → 経済、株価、ビジネス、政治のニュース:日経電子版 title = title_tag.string # タイトル要素を出力 print(title_tag) # タイトルを文字列を出力 print(title)

投稿2017/07/16 00:35

編集2017/07/16 00:37
morningglow

総合スコア85

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

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

YamamotoHiroki

2017/07/16 01:42

できました、ありがとうございます! ドキュメントを読めばできたんですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問