将python的字典格式数据写入excei表中
上面的为最终结果
import requests import re import xlwt import json # 导入必须的包: xlwt,json,requests,re. headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3315.4 Safari/537.36' } url = 'https://chat1.jd.com/api/checkChat?pidList=26004336451,22412368840,25559702284,11524577508,25820918484,13349043688,6200332,11045883520,10563894963,16632303662,5991927,15532659623,19020690355,23722306280,26619656484,5999339,18070284040,20365116716,1733647488,25959585398,4447074,21513497251,6269009,25067989736,26242379122,25628317037,16230894208,10653403147,21507885479,25729173546&callback=jQuery9142528&_=1522742110218' # 用来获取源码 def html_index(): html = requests.get(url, headers=headers) # 当html页面返回的状态码为200时,返回源码的文本格式 if html.status_code == 200: return html.text # 将数据提取并写入excei表中 def write_json(html1): if html1: data_list = [] # 循环得到每一个data for data in html1: # 循环得到data字典里的所有键值对的值 for value in data.values(): # 将得到的值放入空列表中 data_list.append(value) # 创建一个新的列表生成式并赋给一个变量new_list. # 这个列表生成式主要是将数据每8个为一个新的元素存入新的列表中,即列表套列表 new_list = [data_list[i:i + 8] for i in range(0, len(data_list), 8)] # 生成一个xlwt.Workbook对象 xls = xlwt.Workbook() # 调用对象的add_sheet方法 sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True) # 创建我们需要的第一行的标头数据 heads = ['chatDomain', 'chatUrl', 'code', 'pid', 'rank3', 'seller', 'shopId','venderId'] ls = 0 # 将标头循环写入表中 for head in heads: sheet.write(0, ls, head) ls += 1 i = 1 # 将数据分两次循环写入表中 外围循环行 for list in new_list: j = 0 # 内围循环列 for data in list: sheet.write(i, j, data) j += 1 i += 1 # 最后将文件save保存 xls.save('案例.xls') print(u'\n录入成功!') # 解析源码,拿到数据 def html_index_re(html): json_data = re.compile('jQuery9142528\((.*?)\)') html_data = json_data.search(html) html1 = html_data.group(1) html1 = json.loads(html1) # 讲得到的数据传入write_json函数中 write_json(html1) def main(): html = html_index() html_index_re(html) # 这是将py文件设置成本地文件,当在本文件启动本项目时,先执行main函数,当被当成包调用时,不执行main函数。 if __name__ == '__main__': main()