2016-06-16 2 views
1

조금 썼습니다. BeatifulSoup libary를 사용하는 함수입니다. 이 함수는 위키 백과 문서의 기호 목록을 반환해야합니다. 셸에서 쉘 코드가 직접 실행되지만, PythonScript에서는 실행되지 않습니다.

, 나는 다음과 같은 기능을 실행합니다

pythonScript.my_function() 

... 그것은 라인 (28)에서 오류가 발생합니다 :

No connections adapters were found for 'link'. 

내가 직접 내 함수에서 동일한 코드를 입력 할 때 껍데기 안에는 완벽하게 작동합니다. 같은 링크로. 나는 심지어 선을 복사하고 붙여 넣었다.

이것들은 내가 말하고있는 두 줄의 코드이며, 오류는 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) 

입니다. 이것은 오류가 발생하는 지점입니다. 쉘에서 Ive는 단계별로 모든 작업을 수행했습니다. libaries를 가져온 다음 요청과 bs4 함수를 호출합니다. 단 하나의 차이점은 Shell에서는 내가 정의한 함수가 없다는 것입니다.

EDIT2 :

역 추적 (마지막으로 가장 최근 통화) : 여기

정확한 오류 메시지입니다 파일 "", 줄 1, 파일에서 "/ 홈/펠릭스/Dokumente/PythonSAT/DownloadSymbolsFromWikipedia.py "= bs4.BeautifulSoup (response.text) 파일 obtain_parse_wiki_snp500

스프 라인 (28),"/home/felix/anaconda3/lib/python3.5/site-packa ges/requests/api.py ", 줄 67, 수신 반환 요청 ('get', url, params = params, ** kwargs)

파일"/home/felix/anaconda3/lib/python3.5 /site-packages/requests/api.py ", 53 행 요청시 반환 session.request (method = method, url = url, ** kwargs) 파일"/home/felix/anaconda3/lib/python3.5 /site-packages/requests/sessions.py "요청, 라인 468, RESP = self.send (준비, ** 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은 다음과 같습니다 당신이 URL을 수정하면

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

요청은 잘 작동 :

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 –

관련 문제