鱼C论坛

 找回密码
 立即注册
查看: 2298|回复: 2

xlwt保存出错

[复制链接]
发表于 2020-12-10 16:36:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # -*- coding:utf-8 -*-

  2. import requests
  3. from lxml import etree
  4. import re
  5. import xlwt


  6. datalist = []


  7. for i in range(1,9):
  8.     headers = {
  9.         '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'

  10.     }
  11.     url = 'http://sem.bjtu.edu.cn/lists-szjs.html?szyx=184&leixing=0&zhicheng=0&zimu=&k=&page=%d'
  12.     num_url = format(url%i)
  13.     response = requests.get(url=num_url,headers=headers)
  14.     page_textw = response.content.decode()
  15.     tree = etree.HTML(page_textw)
  16.     tec = tree.xpath('/html/body/div[3]/div[2]/div[2]/ul/li')
  17.    
  18.     for i in tec:
  19.       # 老师地址
  20.       tec_url = 'http://sem.bjtu.edu.cn' + i.xpath('./div[2]/div/h6/a/@href')[0]
  21.       # print(tec_url)
  22.       
  23.       tec_page = requests.get(url=tec_url,headers=headers).text
  24.      
  25.       # 名字
  26.       tec_tree = etree.HTML(tec_page)
  27.       name = tec_tree.xpath('/html/body/div[3]/div[2]/div[1]/div[2]/h6/text()')[0]
  28.       
  29.       datalist.append(name)
  30.       # print(name)
  31.       # 职位
  32.       zhi_wei = re.findall(r'<p><span>教师职称:</span><span>(.*?)</span></p>',tec_page)
  33.       if len(zhi_wei) == 0:
  34.         zhi_wei = ['/']
  35.       datalist.append(zhi_wei)
  36.       # print(zhi_wei)
  37.      
  38.       # 院系
  39.       yuan_xi = re.findall(r'<p><span>所属系 :</span><span>(.*?)</span></p>',tec_page)[0]
  40.       if len(yuan_xi) == 0:
  41.         yuan_xi = '/'
  42.       datalist.append(yuan_xi)
  43.       # print(yuan_xi)
  44.       # 邮箱
  45.       e_maile = re.findall(r'<p><span>邮箱:</span><span>(.*?)</span></p>',tec_page)
  46.       if len(e_maile) == 0:
  47.         e_maile = ['/']

  48.       datalist.append(e_maile)
  49.       # print(e_maile)
  50. # 存储
  51. book = xlwt.Workbook(encoding="utf-8",style_compression=0)
  52. sheet = book.add_sheet('北京经济系老师信息.xls',cell_overwrite_ok=True)
  53. col = ['名字','职位','院系','邮箱']
  54. for i in range(len(col)):
  55.     sheet.write(0,i,col[i])
  56. for i in range(40):
  57.    
  58.     for j in range(0,4):
  59.         sheet.write(i+1,datalist[j])
  60. book.save('./教师.xls')

  61. print(datalist)
  62. print('保存成功')
  63. 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[j])
  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: '卜伟


求大佬解决我这个小白问题

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 22:01:08 | 显示全部楼层
  1. sheet.write(i + 1, j, datalist[j])
复制代码

你这个保存出错是因为这个参数没写对,少了j,但是这样写了只写入了第一条数据

你的爬虫保存数据时有点问题,变成一个大列表了,不好循环,其实可以写成一份数据是字典或者一个列表,然后作为一个元素添加进一个总列表,然后循环就方便了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-14 10:37:05 | 显示全部楼层
疾风怪盗 发表于 2020-12-10 22:01
你这个保存出错是因为这个参数没写对,少了j,但是这样写了只写入了第一条数据

你的爬虫保存数据时有 ...

谢谢,的确我只保存了一条数据,但是我怎么循环写入字典啊,可以大致帮我修改一下嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表