2016-06-16 8 views
1

少し書いたBeatifulSoup libaryを使用する関数です。この関数は、Wikipediaの記事の一覧を返します。シェルでシェルコードは直接実行されますが、PythonScriptでは実行されません

、私はこのような機能を実行します。

pythonScript.my_function() 

...それはライン28にエラーがスローされます。

No connections adapters were found for 'link'. 

私が直接私の関数から同じコードを入力するとシェルでは、完全に動作します。同じリンクで私はさらに線をコピーして貼り付けました。

これは私が話しているコードの2行です。エラーはBeautifulSoupの機能で表示されます。

response = requests.get('link') 
soup = bs4.BeautifulSoup(response.text) 

このエラーはなぜ起こるか私が説明することはできません...

編集:ここで私はそれが十分でなければならないと思う完全なコード

#/usr/bin/python 
# -*- coding: utf-8 -*- 

#insert_symbols.py 

from __future__ import print_function 

import datetime 
from math import ceil 

import bs4 
import MySQLdb as mdb 
import requests 

def obtain_parse_wiki_snp500(): 
    ''' 
    Download and parse the Wikipedia list of S&P500 
    constituents using requests and BeatifulSoup. 

    Returns a list of tuples for to add to MySQL. 
    ''' 
#Stores the current time, for the created at record 
now = datetime.datetime.utcnow() 

#Use requests and BeautifulSoup to download the 
#list of S&P500 companies and obtain the symbol table 
response = requests.get('http://en.wikipedia.org/wiki/list_of_S%26P_500_companies') 
soup = bs4.BeautifulSoup(response.text) 

です。これがエラーの発生箇所です。 シェルではこれまで何度も何度も何度もやりました。 libariesをインポートしてから、要求とbs4関数を呼び出します。 1つの違いは、シェルではそのための関数を定義しなかったことです。

EDIT2:

トレースバック(最新の呼び出しの最後): " ファイルで、1行目、「 ファイル" /ホーム/フェリックス/

ここでは、正確なエラーメッセージですDokumente/PythonSAT/DownloadSymbolsFromWikipedia.py "28行、obtain_parse_wiki_snp500

でスープ= bs4.BeautifulSoup(response.text) ファイル" /home/felix/anaconda3/lib/python3.5/site-packa (get、url、params = params、** kwargs)

ファイル "/home/felix/anaconda3/lib/python3.5"を取得するには、ges/requests/api.py " /site-packages/requests/api.py "、53行目、リクエスト中 return session.request(メソッド=メソッド、url = url、** kwargs) ファイル" /home/felix/anaconda3/lib/python3.5 /site-packages/requests/sessions.py "、行468、リクエスト中 resp = self.send(prep、** send_kwargs)

ファイル" /home/felix/anaconda3/lib/python3.5/site -packages/requests/sessions.py "、570行目、送信中 アダプタ= self.get_adapter(url = request.url)

ファイル "/home/felix/anaconda3/lib/python3.5/site-packages/requests/sessions.py"、644行、get_adapter raise InvalidSchema( "'%s'の接続アダプタが見つかりませんでした。 %url) requests.exceptions.InvalidSchema: 'htttp://en.wikipedia'の接続アダプタが見つかりませんでした。org/wiki/list_of_S%26P_500_companies '

+1

あなたの実際のコードを実際に投稿してください。問題が実際に表示されます。 – kindall

答えて

0

htttpのリンクを渡しています。つまり、2つのコードが必要な場合は3つあります。実行するとエラーが発生します。正しいURLは次のとおりです。

http://en.wikipedia.org/wiki/list_of_S%26P_500_companies 

URLを修正したら、要求が正常に動作します:

n [1]: import requests 


In [2]: requests.get('http://en.wikipedia.org/wiki/list_of_S%26P_500_companies') 
Out[3]: <Response [200]> 

シンボルを取得するには:

n [28]: for tr in soup.select("table.wikitable.sortable tr + tr"): 
      sym = tr.select_one("a.external.text") 
      if sym: 
       print(sym.text) 
    ....:   
MMM 
ABT 
ABBV 
ACN 
ATVI 
AYI 
ADBE 
AAP 
AES 
AET 
AFL 
AMG 
A 
GAS 
APD 
AKAM 
ALK 
AA 
AGN 
ALXN 
ALLE 
ADS 
ALL 
GOOGL 
GOOG 
MO 
AMZN 
AEE 
AAL 
AEP 

など...... .........

+0

私はそれをチェックしましたが、私のスクリプトではスペースはありません。ここにstackoverflowで間違ったものを貼り付ける必要があります。 –

+0

スタックオーバフローエディタで、リンクが長くなっていたためにリンクが分離されました。たぶんこれのためにスペースが現れました。 –

+0

@feliz、htttpプロトコルがありません。それはhttp –

関連する問題