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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Q&A

解決済

2回答

7251閲覧

Python 3.6.5 ・・・ [WinError 10061]を解決したい

MacKimura

総合スコア15

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

0グッド

1クリップ

投稿2019/01/25 06:03

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)Anaconda(Python3.x)でwebからキーワードに合致するサイトを収集するシステムを作っています。
途中、実装中(試行中)以下のエラーメッセージが発生しました。

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

ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。

該当のソースコード

#ライブラリをインストール
from bs4 import BeautifulSoup
import requests
import pandas as pd

columns = ['rank','title','url','affiliate_url']
df = pd.DataFrame(columns=columns)
df.head()

keyword = '会社 いきたくない'

html_doc = requests.get('https://www.google.co.jp/search?num=10&q=' +keyword).text
soup = BeautifulSoup(html_doc, 'html.parser') # BeautifulSoupの初期化
print(soup.prettify())

試したこと

解決方法が見当たらない為、どなたかご教示いただけますようお願いします。

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

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

Jupyter notebook 5.5.0
(Anaconda, Python 3.6.5, IPython 6.4.0 )

以上

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

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

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

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

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

guest

回答2

0

google ってプログラムっぽい user agent で検索すると 403 返してきますね。
プログラムから使いたいなら google custom search api を使うべしっていう意思表示でしょう。

質問者様のプログラムは僕の環境でもちゃんと HTML を取得しました。
環境によって user agent が異なるのが原因かと思われます。
あんまり深く調査すべきところではないです。

アンサーとしては、 google の検索結果をスクレイピングせず、 custom search api を使いましょう。

投稿2019/01/25 17:41

編集2019/01/25 17:51
set0gut1

総合スコア2413

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

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

MacKimura

2019/01/29 05:52

ご回答ありがとうございます。 ご回答者様の方法を試し中ですが、 現在・・・apiのレスポンスが悪いためか、結果を得られておりません。 追って結果報告させていただきます。
MacKimura

2019/01/29 08:42

Proxyについて、他サイト参照し、下記コードにて当方質問のエラーは解消されました。 ​ "http_proxy=http://your_proxy:your_port", "https_proxy=http://your_proxy:your_port" ただし、別のエラーが発生しており、下記メッセージが表示されます。 引き続き申し訳ありませんが、アドバイスご教示いただけませんでしょうか。 以下、エラーメッセージ全文となります。 --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-20-7a6dec61d5c5> in <module>() 11 } 12 ---> 13 req = requests.get("http://www.google.co.jp/", proxies=proxy_dict) 14 15 columns = ['rank','title','url','affiliate_url'] ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py in get(url, params, **kwargs) 70 71 kwargs.setdefault('allow_redirects', True) ---> 72 return request('get', url, params=params, **kwargs) 73 74 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs) 56 # cases, and look like a memory leak in others. 57 with sessions.Session() as session: ---> 58 return session.request(method=method, url=url, **kwargs) 59 60 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 497 498 settings = self.merge_environment_settings( --> 499 prep.url, proxies, stream, verify, cert 500 ) 501 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py in merge_environment_settings(self, url, proxies, stream, verify, cert) 669 if self.trust_env: 670 # Set environment's proxies. --> 671 no_proxy = proxies.get('no_proxy') if proxies is not None else None 672 env_proxies = get_environ_proxies(url, no_proxy=no_proxy) 673 for (k, v) in env_proxies.items(): AttributeError: 'set' object has no attribute 'get'
guest

0

ベストアンサー

こんにちは。

ご提示のコードに問題はないです(私の環境では実行できました)。
getする先を変えてみても同じでしょうか。

あとはProxyサーバーの有無を確認し、必要なら下のように設定してください。
参考:認証プロキシ環境でpythonのRequestsライブラリを使用する方法 - メモめもメモ

投稿2019/01/25 06:17

編集2019/01/25 06:22
firedfly

総合スコア1131

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

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

MacKimura

2019/01/29 05:49

ご回答ありがとうございます。 返信遅くなり申し訳ありません。 併せて申し訳ないのですが、私まだ初心者でして、 「getする先」について、かみ砕いて具体的なアクションでご教示いただけませんでしょうか。
firedfly

2019/01/29 05:53

requests.getする先(質問ではGoogle)を他のURLに変えてうまくいくかを試すと、 Proxyが悪いのかURLが悪いのかわかる、という意味です。
MacKimura

2019/01/29 06:19

重ねてのアドバイス感謝申し上げます。 URLを、他検索サイト:Yahoo!、msnで試しましたが、同様のエラーが発生しました。 Proxyを試す場合について、当方プロキシ接続ではなく、社内のイーサネット接続です。 ※ この点もよくわかっておらず、申し訳ありませんが、対応方法について解説いただけませんでしょうか。
firedfly

2019/01/29 06:40

社内ローカルエリアネット(LAN)からのイーサネット接続する場合 セキュリティなどの観点からProxyサーバを経由しないとインターネットに接続できない場合があります。 Proxyが必要なのか、必要であればどんな設定か ネットワーク管理者にお問い合わせ頂けると幸いです。
MacKimura

2019/01/29 08:41

Proxyについて、他サイト参照し、下記コードにて当方質問のエラーは解消されました。 ​ "http_proxy=http://your_proxy:your_port", "https_proxy=http://your_proxy:your_port" ただし、別のエラーが発生しており、下記メッセージが表示されます。 引き続き申し訳ありませんが、アドバイスご教示いただけませんでしょうか。 以下、エラーメッセージ全文となります。 --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-20-7a6dec61d5c5> in <module>() 11 } 12 ---> 13 req = requests.get("http://www.google.co.jp/", proxies=proxy_dict) 14 15 columns = ['rank','title','url','affiliate_url'] ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py in get(url, params, **kwargs) 70 71 kwargs.setdefault('allow_redirects', True) ---> 72 return request('get', url, params=params, **kwargs) 73 74 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs) 56 # cases, and look like a memory leak in others. 57 with sessions.Session() as session: ---> 58 return session.request(method=method, url=url, **kwargs) 59 60 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 497 498 settings = self.merge_environment_settings( --> 499 prep.url, proxies, stream, verify, cert 500 ) 501 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\requests\sessions.py in merge_environment_settings(self, url, proxies, stream, verify, cert) 669 if self.trust_env: 670 # Set environment's proxies. --> 671 no_proxy = proxies.get('no_proxy') if proxies is not None else None 672 env_proxies = get_environ_proxies(url, no_proxy=no_proxy) 673 for (k, v) in env_proxies.items(): AttributeError: 'set' object has no attribute 'get'
firedfly

2019/01/29 08:58

Proxy設定で解決したようでようございました。 進めど進めど問題が出るのは致し方ありませんし、そのたび人に訊くわけにもいきません。 何十分か自力で取り組んでいただいて、それでも解決しなければ別の質問を立てて頂ければ幸いです。 (後代に参照されて役立つノウハウを蓄積するためにも、teratailは一問一答が原則です)
MacKimura

2019/01/29 09:05

承知しました。 仰る通りです。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問