'unexpected EOF while parsing'报错,求助我错在那里!? 20C

下面是我用python写的小爬虫,报错错误出在eval()附近,但是我找了一下午都没有找到错误在那里!!跪求大神们帮助。
下面是我的代码

import requests
import time
import urllib3
import requests
from urllib.parse import urlencode

content=[]
relation=[]
eventlist=[]##所有event记录
texts=[]
texts.append('货币超发')##event会不断的加content到text里,当遍历了所有content没有新的content加进来了,程序就会自动停止

headers = {
    'Host':'eeg.8wss.com',
    'Referer':'http://eeg.8wss.com/main',
    'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Maxthon/5.2.7.5000',
    'X-Requested-With':'XMLHttpRequest',
    }

params = {
        'text':texts,
        'layers':1
        }

base_url='http://eeg.8wss.com/api/query_abstract_event?'

def get_page(text):
    url = base_url + urlencode(params)
    try:
        time.sleep(5)
        #response=requests.get(url,headers=headers)
        http=urllib3.PoolManager()
        response=http.request('GET',url)
        htmll=response.data.decode('UTF-8')
        html=eval(htmll)
        return html
    except requests.ConnectionError as e:
        print('Error', e.args)
        time.sleep(300)
        get_page(text)


def parse_page(html):
    relations=html.get('relations')
    event=html.get('events')

    if relations:##当当前节点不能再展开时,返回的response为空
        for i in relations: 
            if len(i)==9 and i['code'] not in content:
                content.append(i)
            if len(i)==4 and i['code'] not in relation:
                relation.append(i)
            else:
                continue
    if event:
        for j in event:
            if j['code'] not in eventlist:
                eventlist.append(j)
                if j['category']=='abstract':##abstract为蓝色的可衍生节点
                    texts.append(j['text'])
            else:
                continue



if __name__=='__main__':
    #for text in texts:
    haha = get_page(text)
    results=parse_page(haha)

报错:
File "", line 36, in get_page
html=eval(htmll)

File "", line unknown

^

SyntaxError: unexpected EOF while parsing

4个回答

你可以调试输出下html是不是完整,很有可能是你的html不完整,可能是网络不稳定造成的,或者是你的请求不正确(比如服务器有反爬虫的手段)

html=eval(htmll) 这一行的htmll变量是空值,至于为什么你要仔细debug了

python eval函数
可以将字符串转换成python对象,如eval('[2,3]') 输出[2,3]
也可以计算表达式的值 如eval('2*3') 输出6, 但是要求eval参数不能为'' 或者None

测试了你的代码,发现htmll为空字符串,需要在执行html=eval(htmll) 之前判断下htmll是否为空

这是你第一次循环时的URL:http://eeg.8wss.com/api/query_abstract_event?text=%5B'%E8%B4%A7%E5%B8%81%E8%B6%85%E5%8F%91'%5D&layers=1
好像打不开,然后字符串 htmll 是个空字符,所以才会报错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问