关于爬虫保存到Exel中有一些问题请教

这几天心血来潮想做一个爬虫,做到保存到Exel中就出现了问题,但是把代码单独弄出来可以运行,

请各位大神帮帮忙看看怎么解决。

关于爬虫保存到Exel中有一些问题请教

这一段可以保存下来

关于爬虫保存到Exel中有一些问题请教

我把它们放到一个def里就用不了了关于爬虫保存到Exel中有一些问题请教

这个错误怎么解决呢

以下是源代码

 

# -*- coding: utf-8 -*-
from PyQt4 import QtCore,QtGui,uic
import ui_x
import re,requests,sys,xlsxwriter
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding('utf-8')
class MyApp(QtGui.QMainWindow,ui_x.Ui_Dialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        ui_x.Ui_Dialog.__init__(self)
        self.setupUi(self)
        self.chooseButton.clicked.connect(self.choosefunction)
        self.shishiButton.clicked.connect(self.shishifunction)
        self.saveButton.clicked.connect(self.savefunction)
     
def shishifunction(self):
    url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
    res = requests.get(url)
    res.encoding = ('gbk')
    soup = BeautifulSoup(res.text, 'html.parser')
    name = re.findall('<a class="list-title" target="_blank" href=".*?">(.*?)</a>', res.text)
    self.name=name
    hot = re.findall('<span class="icon-.*?">(.*?)</span>', res.text)
    self.hot=hot
    zhuangtai= re.findall('<span class="icon-(.*?)">.*?</span>', res.text)
    self.zhuangtai=zhuangtai
    link = re.findall('<a class="list-title" target="_blank" href="(.*?)" href_top=".*?">.*?</a>', res.text)
    self.link=link

    self.textEdit.append(QtCore.QString.fromUtf8('找到' + str(len(name)) + '热点信息!' ))
    for i in range(len(name)):
        self.textEdit.append(QtCore.QString.fromUtf8('排名'+str(i+1)+':'))
        self.textEdit.append(QtCore.QString.fromUtf8(str(name[i])))
        i=i+1
def savefunction(self):
    lujing = self.path
    path = lujing + '\\first.xlsx'
    print path
    name = self.name
    hot = self.hot
    link = self.link
    zhuangtai = self.zhuangtai
    j=0
    workbook = xlsxwriter.Workbook(path)
    worksheet = workbook.add_worksheet('firt_sheet')
    worksheet.write(0, 0, '排名')
    worksheet.write(0, 1, '关键字')
    worksheet.write(0, 2, '热度值')
    worksheet.write(0, 3, '热度状态')
    worksheet.write(0, 4, '链接')
    i = 0
    for i in range(len(name)):
        worksheet.write(i+1,0,i+1)
    for i in range(len(name)):
        worksheet.write(i+1,1,str(name[i]))
    for i in range(len(name)):
        worksheet.write(i+1,2,str(hot[i]))
    for i in range(len(name)):
        worksheet.write(i + 1, 3, str(zhuangtai[i]))
    for i in range(len(name)):
        worksheet.write(i + 1,4,str(link[i]))
    workbook.close()
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())