내 코드를 실행하는 동안 다음 오류 코드가 표시됩니다. 이 오류는 즉시 발생하지 않으며 2-7 시간 후에 임의로 발생합니다. 오류가 발생할 때까지 온라인 피드를 스트리밍하여 DB에 기록하는 데 문제가 없습니다.MySQL 데이터베이스를 충전하는 동안 "IndexError : 목록 색인이 범위를 벗어남"
오류 메시지 : 여기
Traceback (most recent call last):
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 78, in <module>
main()
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 63, in main
feed_iii = feed_load_iii(feed_url_iii)
File "C:\Python27\MySQL_finalversion\RSS_common_FV.py", line 44, in feed_load_iii
in feedparser.parse(feed_iii).entries]
IndexError: list index out of range
당신이 내 코드를 찾을 수 있습니다 추가 정보가 필요하면
import feedparser
import MySQLdb
import time
from cookielib import CookieJar
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username - SELECT * FROM mysql.user
passwd="****", # your password
db="sentimentanalysis_unicode",
charset="utf8") # name of the data base
cur = db.cursor()
cur.execute("SET NAMES utf8")
cur.execute("SET CHARACTER SET utf8")
cur.execute("SET character_set_connection=utf8")
cur.execute("DROP TABLE IF EXISTS feeddata_iii")
sql_iii = """CREATE TABLE feeddata_iii(III_ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(III_ID),III_UnixTimesstamp integer,III_Timestamp varchar(255),III_Source varchar(255),III_Title varchar(255),III_Text TEXT,III_Link varchar(255),III_Epic varchar(255),III_CommentNr integer,III_Author varchar(255))"""
cur.execute(sql_iii)
def feed_load_iii(feed_iii):
return [(time.time(),
entry.published,
'iii',
entry.title,
entry.summary,
entry.link,
(entry.link.split('=cotn:')[1]).split('.L&id=')[0],
(entry.link.split('.L&id=')[1]).split('&display=')[0],
entry.author)
for entry
in feedparser.parse(feed_iii).entries]
def main():
feed_url_iii = "http://www.iii.co.uk/site_wide_discussions/site_wide_rss2.epl"
feed_iii = feed_load_iii(feed_url_iii)
print feed_iii[1][1]
for item in feed_iii:
cur.execute("""INSERT INTO feeddata_iii(III_UnixTimesstamp, III_Timestamp, III_Source, III_Title, III_Text, III_Link, III_Epic, III_CommentNr, III_Author) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)""",item)
db.commit()
if __name__ == "__main__":
while True:
main()
time.sleep(240)
- 문의 주시기 바랍니다. 도움이 필요해!
감사합니다.
먼저 (같은)와 함께 할 수있는 현재 제기되고있는 예외를이 것 간단하게 트랩을 할 오히려 정치 못한 방법으로, 지금 당신의 질문에 대해 당신은 묶는된다 존재하지 않는리스트 ('splits' 참조)에있는 셀에 접근하려면, 코드를 실행하기 전에 엔트리를 인쇄하거나 로깅하여 문제가있는 곳을 확인하십시오. –
올바른 방법으로 당신을 이해합니까? 오류가 feed_load_iii 블록의 split 함수에 속해 있습니까? try : split (X) except : 'NULL'값을 설정하십시오. – user3665218
'def feed_load_iii (feed_iii) :'의'return' 문은 어디에서 왔습니까? –