xlwt保存出错
# -*- coding:utf-8 -*-import requests
from lxml import etree
import re
import xlwt
datalist = []
for i in range(1,9):
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'http://sem.bjtu.edu.cn/lists-szjs.html?szyx=184&leixing=0&zhicheng=0&zimu=&k=&page=%d'
num_url = format(url%i)
response = requests.get(url=num_url,headers=headers)
page_textw = response.content.decode()
tree = etree.HTML(page_textw)
tec = tree.xpath('/html/body/div/div/div/ul/li')
for i in tec:
# 老师地址
tec_url = 'http://sem.bjtu.edu.cn' + i.xpath('./div/div/h6/a/@href')
# print(tec_url)
tec_page = requests.get(url=tec_url,headers=headers).text
# 名字
tec_tree = etree.HTML(tec_page)
name = tec_tree.xpath('/html/body/div/div/div/div/h6/text()')
datalist.append(name)
# print(name)
# 职位
zhi_wei = re.findall(r'<p><span>教师职称:</span><span>(.*?)</span></p>',tec_page)
if len(zhi_wei) == 0:
zhi_wei = ['/']
datalist.append(zhi_wei)
# print(zhi_wei)
# 院系
yuan_xi = re.findall(r'<p><span>所属系 :</span><span>(.*?)</span></p>',tec_page)
if len(yuan_xi) == 0:
yuan_xi = '/'
datalist.append(yuan_xi)
# print(yuan_xi)
# 邮箱
e_maile = re.findall(r'<p><span>邮箱:</span><span>(.*?)</span></p>',tec_page)
if len(e_maile) == 0:
e_maile = ['/']
datalist.append(e_maile)
# print(e_maile)
# 存储
book = xlwt.Workbook(encoding="utf-8",style_compression=0)
sheet = book.add_sheet('北京经济系老师信息.xls',cell_overwrite_ok=True)
col = ['名字','职位','院系','邮箱']
for i in range(len(col)):
sheet.write(0,i,col)
for i in range(40):
for j in range(0,4):
sheet.write(i+1,datalist)
book.save('./教师.xls')
print(datalist)
print('保存成功')
print('老师共:',len(tec_url))
我保存过程中老是报出:
D:\迅雷下载\python\爬虫>D:/迅雷下载/python/python.exe d:/迅雷下载/python/爬虫/练习2.py
Traceback (most recent call last):
File "d:/迅雷下载/python/爬虫/练习2.py", line 70, in <module>
sheet.write(i+1,datalist)
File "D:\迅雷下载\python\lib\site-packages\xlwt\Worksheet.py", line 1088, in write
self.row(r).write(c, label, style)
File "D:\迅雷下载\python\lib\site-packages\xlwt\Row.py", line 230, in write
self.__adjust_bound_col_idx(col)
File "D:\迅雷下载\python\lib\site-packages\xlwt\Row.py", line 71, in __adjust_bound_col_idx
iarg = int(arg)
ValueError: invalid literal for int() with base 10: '卜伟
求大佬解决我这个小白问题
sheet.write(i + 1, j, datalist)
你这个保存出错是因为这个参数没写对,少了j,但是这样写了只写入了第一条数据
你的爬虫保存数据时有点问题,变成一个大列表了,不好循环,其实可以写成一份数据是字典或者一个列表,然后作为一个元素添加进一个总列表,然后循环就方便了 疾风怪盗 发表于 2020-12-10 22:01
你这个保存出错是因为这个参数没写对,少了j,但是这样写了只写入了第一条数据
你的爬虫保存数据时有 ...
谢谢,的确我只保存了一条数据,但是我怎么循环写入字典啊,可以大致帮我修改一下嘛
页:
[1]