关于爬虫保存到Exel中有一些问题请教
这几天心血来潮想做一个爬虫,做到保存到Exel中就出现了问题,但是把代码单独弄出来可以运行,
请各位大神帮帮忙看看怎么解决。
这一段可以保存下来
我把它们放到一个def里就用不了了
这个错误怎么解决呢
以下是源代码
# -*- 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_())