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: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('活干完了') 我个人喜欢用defaultdict来构造数据,楼主可以试试 叫我小王叔叔 发表于 2021-5-12 13:30
改了一下,好像是可以了,你看看,你的逻辑不对,数据都不在一个维度里。
impor ...
这思路非常好,学习受教 double07 发表于 2021-5-12 14:14
这思路非常好,学习受教
共同学习,我也刚开始自学。 本帖最后由 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)
```
magicianly 发表于 2021-5-12 15:25
不知道为啥,感觉你们写的好复杂啊,我也来写一个吧,你们处理JSON数据的方式有点单一哦
```python
...
才开始学python,不会复杂的,结果为导向嘛,怎样简单怎样来,感谢大佬分享 double07 发表于 2021-5-12 21:04
才开始学python,不会复杂的,结果为导向嘛,怎样简单怎样来,感谢大佬分享
那个结果有点问题,如果是带序号,需要把TITLE写一个序号
页:
[1]