0
주식 기호 데이터를 csv 파일로 스크랩하도록 코드를 작성하려고합니다. 그러나 다음 오류가 발생합니다.결합 된 예외 Beautiful Soup HTTPError가 정의되지 않음
Traceback (most recent call last):
File "company_data_v3.py", line 23, in <module>
page = urllib2.urlopen("http://finance.yahoo.com/q/ks?s="+newsymbolslist[i] +"%20Key%20Statistics").read()
File "C:\Python27\lib\urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
나는이 suggestion을 시도했지만이 프로그램에 urlib2 HTTPError을 수입하는 일을하지 않았다. (내가 이미 가지고 있기 때문에 모듈이 가져 왔다고 할 여분의 것
symbols.txt 파일이 주식 기호를 가지고 여기에 내가 사용하고있는 코드입니다..
import urllib2
from BeautifulSoup import BeautifulSoup
import csv
import re
import urllib
from urllib2 import HTTPError
# import modules
symbolfile = open("symbols.txt")
symbolslist = symbolfile.read()
newsymbolslist = symbolslist.split("\n")
i = 0
f = csv.writer(open("pe_ratio.csv","wb"))
# short cut to write
f.writerow(["Name","PE","Revenue % Quarterly","ROA% YOY","Operating Cashflow","Debt to Equity"])
#first write row statement
# define name_company as the following
while i<len(newsymbolslist):
page = urllib2.urlopen("http://finance.yahoo.com/q/ks?s="+newsymbolslist[i] +"%20Key%20Statistics").read()
soup = BeautifulSoup(page)
name_company = soup.findAll("div", {"class" : "title"})
for name in name_company: #add multiple iterations?
all_data = soup.findAll('td', "yfnc_tabledata1")
stock_name = name.find('h2').string #find company's name in name_company with h2 tag
try:
f.writerow([stock_name, all_data[2].getText(),all_data[17].getText(),all_data[13].getText(), all_data[29].getText(),all_data[26].getText()]) #write down PE data
except (IndexError, urllib2.HTTPError) as e:
pass
i+=1
내가 정의해야 함 ? 당신의 도움에 대해 더 구체적으로 감사를 오류 당신은 잘못된 위치에 예외를 잡고있다
나는 제안한 코드를 시도하고 들여 쓰기 오류가 발생합니다. 나는 그것이 간단한 문제임을 안다. 스프와 name_company 변수는 어떻게 수정합니까? for 루프에 넣어야합니까? –
나머지는'soup ='이후부터 코드와 같은 들여 쓰기 수준에 따라옵니다. 그래서'try :'문과 일치하게됩니다. –