前言
js的方式:直接使用post获取所有的数据,因为是分页数据有total显示所有的数据,在请求的时候,就可以直接把每页的数据显示为total的值。没有太大的技术含量
python方式:直接遍历页码获取数据,js也可以
操作代码
- js
// url是要获取数据的接口,直接从浏览器中header查看即可,param也是如此
self.$http.post(`url`, param).then(result => {
// jsonData 是需要的数据。这是在网搜索的关于导出为csv的方法。没有样式,且导出之后最好打开一遍,然后另存为xlxs
let str = `id,logo,公司名称,种类,所属区域,地址\n`;//
//增加\t为了不让表格显示科学计数法或者其他格式
for(let i = 0; i < jsonData.length; i++){
for(let item in jsonData[i].company){
// console.log(jsonData[i].company[item])
str+=`${jsonData[i].company[item] + '\t'},`;
}
str+='\n';
}
//encodeURIComponent解决中文乱码, \ufeff是 ""
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
//通过创建a标签实现
let link = document.createElement("a");
link.href = uri;
//对下载的文件命名
link.download = "展商公司.csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
- python
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import requests
import json
import openpyxl
def save_to_file(response_data,worksheet):
#shop_items 是需要的数据,这里只有两列
for i in shop_items:
company_data = i['company']
company_name = company_data['name']
company_info = company_data['category']
row = []
row.append(str(company_name))
row.append(str(company_info))
worksheet.append(row)
#with open('company_info.txt','a',encoding='utf-8') as f:
# data = str(company_name) + '' + str(company_info) + '\n'
# f.write(data)
def post_url(page_index,worksheet):
# 发送请求是需要的参数headers和查询的内容req_data
headers = {}
req_data = {}
# 这是查询语句中的分页的页码
req_data['page'] = page_index
response = requests.post('url',headers=headers,data=json.dumps(req_data))
response_data = json.loads(response.text)
save_to_file(response_data,worksheet)
# has_next 是判断是否还有最后一页的
if has_next:
page_index = page_index + 1
post_url(page_index,worksheet)
else:
print('donw!')
def main():
workbook = openpyxl.Workbook()
worksheet = workbook.active
worksheet.append(['公司名','信息'])
start_page = 1
post_url(start_page,worksheet)
workbook.save('company_list.xlxs')
if __name__ == '__main__'
main()