将网页表格(爬去数据转为excel)

将网页表格(爬去数据转为excel)

我们在日常生活中,可能都需要将爬去的数据,保存到本地,或者将文本txt文件,复制粘贴到excel中,会出现形成了一个单元格,而不是我们需要的样子

通过Python的xlwt模块来实现

import requests
import re
import xlwt


# 获取数据
url = 'http://lib.stat.cmu.edu/datasets/veteran' # 数据网址链接
res = requests.get(url)
# print(res.text)
# print(type(res.text))
# print('='*30)
str1 = re.sub('\D',' ',res.text) # 正则表达式
datas = str1.split()[12:] #  去除Variables部分,非数字
print(datas)

# 定义解析数据写入excel
def data_write(test_excel111, datas):
    f = xlwt.Workbook(encoding='utf-8')
    sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)  # 创建sheet
    #  添加表头 
    # 先定义一个列表
    # 我这里有8列
    name_lists = ['Treatment  1=standard,  2=test', 'Celltype   1=squamous,  2=smallcell,  3=adeno,  4=large',
                 'Survival in days', 'Status     1=dead, 0=censored', 'Karnofsky score', 'Months from Diagnosis',
                 'Age in years', 'Prior therapy  0=no, 10=yes']
    x = 0
    y = 0
    for name_list in name_lists:
        sheet1.write(x, y, name_list)
        y += 1

    # 将数据写入第 i 行,第 j 列
    i = 1
    j = 0
    for data in datas:
        if j % 8 == 0 and j != 0:
            # 8是代表有8列
            i = i + 1
            j = 0
        sheet1.write(i,j,data)
        j += 1
    f.save(test_excel111)  # 保存文件


data_write('./test_excel111.xls',datas)


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以回答这个问题。您可以使用第三方库,如Apache POI,读取Excel表格并将其转化为JSON数据。以下是Java代码示例: ```java // 导入依赖 import org.apache.poi.ss.usermodel.*; import org.json.*; import java.io.*; import java.util.*; public class ExcelToJsonConverter { public static void main(String[] args) throws Exception { // 读取Excel文件 Workbook workbook = WorkbookFactory.create(new File("data.xlsx")); // 读取第一个工作表 Sheet sheet = workbook.getSheetAt(0); // 获取表头行 Row headerRow = sheet.getRow(0); // 遍历每一行 JSONArray rows = new JSONArray(); for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { Row row = sheet.getRow(i); JSONObject obj = new JSONObject(); // 遍历每一列 for (int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j); String columnName = headerRow.getCell(j).getStringCellValue(); obj.put(columnName, getCellValue(cell)); } rows.put(obj); } // 输出JSON数据 System.out.println(rows.toString()); } // 获取单元格的值 private static Object getCellValue(Cell cell) { switch (cell.getCellType()) { case BLANK: return null; case BOOLEAN: return cell.getBooleanCellValue(); case ERROR: throw new RuntimeException("Cell contains an error"); case NUMERIC: return cell.getNumericCellValue(); case STRING: return cell.getStringCellValue(); case FORMULA: return getCellValue(cell.getCachedFormulaResultType() == CellType.NUMERIC ? cell : cell.getSheet().getRow(cell.getRowIndex()).getCell(cell.getColumnIndex())); default: throw new RuntimeException("Cell type not supported"); } } } ``` 请注意,此代码示例仅适用于Excel表格中的简单数据类型,如字符串、数字和布尔值。对于复杂数据类型,如日期和时间,您需要编写自定义的转换逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值