double07 发表于 2021-5-12 12:05

python 数据偏移?

本帖最后由 double07 于 2021-5-12 23:36 编辑

想得到图片一的格式,但我这代码写出来格式,数据偏移了?
import re

import pandas as pd
import requests

num = 0
url = 'https://sf-item.taobao.com/json/get_bid_records.htm?currentPage=1&id=641634330827&records_type=pageRecords'
headers = {
    'Referer': 'https://sf-item.taobao.com/sf_item/641634330827.htm?spm=a213w.7398504.paiList.1.52bd533aQrsYmj'
               '&track_id=2151e118-70ef-4958-bfe3-24d7937454ff'
}
data_lst = []
response = requests.get(url=url, headers=headers).text
status_lst = re.findall(r'status:(.*?),', response)# 状态

for i in status_lst:
    lst = {}
    lst['索引'] = ''
    lst['状态'] = i
    data_lst.append(lst)

buyer_lst = re.findall(r'alias:"(.*?)"', response)# 竞买人
for i in buyer_lst:
    lst = {}
    lst['竞买人'] = i
    data_lst.append(lst)

price_lst = re.findall(r'price:"(.*?)"', response)# 价格
for i in price_lst:
    lst = {}
    lst['价格'] = i
    data_lst.append(lst)

time_lst = re.findall(r'date:"(.*?)"', response)# 竞买时间
for i in price_lst:
    lst = {}
    lst['竞买时间'] = i
    data_lst.append(lst)
# print(data_lst)

df = pd.DataFrame(data_lst)
for i in df.index:
    df['索引'].at = i + 1
df.to_excel('./end.xlsx', index=False)
num += 1
print('第%s条数据已保存' % num)


叫我小王叔叔 发表于 2021-5-12 13:30

本帖最后由 叫我小王叔叔 于 2021-5-12 13:51 编辑

改了一下,好像是可以了,你看看,你的逻辑不对,数据都不在一个维度里。
import re

import pandas as pd
import requests

num = 0
url = 'https://sf-item.taobao.com/json/get_bid_records.htm?currentPage=1&id=641634330827&records_type=pageRecords'
headers = {
    'Referer': 'https://sf-item.taobao.com/sf_item/641634330827.htm?spm=a213w.7398504.paiList.1.52bd533aQrsYmj'
               '&track_id=2151e118-70ef-4958-bfe3-24d7937454ff'
}
data_lst = []
response = requests.get(url=url, headers=headers).text
status_lst = re.findall(r'status:(.*?),', response)# 状态
buyer_lst = re.findall(r'alias:"(.*?)"', response)# 竞买人
price_lst = re.findall(r'price:"(.*?)"', response)# 价格
time_lst = re.findall(r'date:"(.*?)"', response)# 竞买时间
data_lst=[]
for i in range(len(status_lst)):
    data=,buyer_lst,price_lst,time_lst]
    data_lst.append(data)

df = pd.DataFrame(data_lst)
df.columns = ["状态", "竞买人", "价格","竞买时间"]
df.to_excel('./end.xlsx', index=False)
print('活干完了')

百千三昧 发表于 2021-5-12 12:45

咸鱼灭 发表于 2021-5-12 13:09

我个人喜欢用defaultdict来构造数据,楼主可以试试

double07 发表于 2021-5-12 14:14

叫我小王叔叔 发表于 2021-5-12 13:30
改了一下,好像是可以了,你看看,你的逻辑不对,数据都不在一个维度里。
impor ...

这思路非常好,学习受教

叫我小王叔叔 发表于 2021-5-12 14:19

double07 发表于 2021-5-12 14:14
这思路非常好,学习受教

共同学习,我也刚开始自学。

magicianly 发表于 2021-5-12 15:25

本帖最后由 magicianly 于 2021-5-12 15:28 编辑

不知道为啥,感觉你们写的好复杂啊,我也来写一个吧,你们处理JSON数据的方式有点单一哦
```python

import demjson
import requests
import xlwt


def write_excel_xls(path, sheet_name, value, title=None, isno=None):
    """
    写Excel文件
    :param path: 文件存放地址
    :param sheet_name: 文档名称
    :param title: 文档头
    :param value: 一行的数据列表保存
    :param isno: 是否序号
    """
    count = 1
    index = len(value)# 获取需要写入数据的行数
    workbook = xlwt.Workbook()# 新建一个工作簿
    sheet = workbook.add_sheet(sheet_name)# 在工作簿中新建一个表格
    if title:
      for t in range(len(title)):
            sheet.write(0, t, title)
    if isno:
      for i in range(0, index):
            sheet.write(i + 1, 0, count)
            for j in range(0, len(value)):
                sheet.write(i + 1, j + 1, value)# 像表格中写入数据(对应的行和列)
            count += 1
    else:
      for i in range(0, index):
            for j in range(0, len(value)):
                sheet.write(i + 1, j, value)# 像表格中写入数据(对应的行和列)
    workbook.save(path)# 保存工作簿
    print("xls格式表格写入数据成功!")


url = 'https://sf-item.taobao.com/json/get_bid_records.htm?currentPage=1&id=641634330827&records_type=pageRecords'
r = requests.get(url)
datas = demjson.decode(r.text)
data_lst = list()
for data in datas.get('records'):
    status_lst = data.get('status')# 状态
    buyer_lst = data.get('alias')# 竞买人
    price_lst = data.get('price')# 价格
    time_lst = data.get('date')# 竞买时间
    data_lst.append()
title = ['状态', '竞买人', '价格', '竞买时间']
write_excel_xls('./1.xls', 'test', data_lst, isno=True, title=title)

```

double07 发表于 2021-5-12 21:04

magicianly 发表于 2021-5-12 15:25
不知道为啥,感觉你们写的好复杂啊,我也来写一个吧,你们处理JSON数据的方式有点单一哦
```python

...

才开始学python,不会复杂的,结果为导向嘛,怎样简单怎样来,感谢大佬分享

magicianly 发表于 2021-5-13 09:27

double07 发表于 2021-5-12 21:04
才开始学python,不会复杂的,结果为导向嘛,怎样简单怎样来,感谢大佬分享

那个结果有点问题,如果是带序号,需要把TITLE写一个序号
页: [1]
查看完整版本: python 数据偏移?