Python基于pandas实现json格式转换成dataframe的方法


Posted in Python onJune 22, 2018

本文实例讲述了Python基于pandas实现json格式转换成dataframe的方法。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#!python3
import re
import json
from bs4 import BeautifulSoup
import pandas as pd
import requests
import os
from pandas.io.json import json_normalize
class image_structs():
  def __init__(self):
    self.picture_url = {
      "image_id": '',
      "picture_url": ''
    }
class data_structs():
  def __init__(self):
    # columns=['title', 'item_url', 'id','picture_url','std_desc','description','information','fitment'])
    self.info={
      "title":'',
      "item_url":'',
      "id":0,
      "picture_url":[],
      "std_desc":'',
      "description":'',
      "information":'',
      "fitment":''
    }
# "https://waldoch.com/store/catalogsearch/result/index/?cat=0&limit=200&p=1&q=nerf+bar"
# https://waldoch.com/store/new-oem-ford-f-150-f150-5-running-boards-nerf-bar-crew-cab-2015-w-brackets-fl34-16451-ge5fm6.html
def get_item_list(outfile):
  result = []
  for i in range(6):
    print(i)
    i = str(i+1)
    url = "https://waldoch.com/store/catalogsearch/result/index/?cat=0&limit=200&p="+i+"&q=nerf+bar"
    web = requests.get(url)
    soup = BeautifulSoup(web.text,"html.parser")
    alink = soup.find_all("a",class_="product-image")
    for a in alink:
      title = a["title"]
      item_url = a["href"]
      result.append([title,item_url])
  df = pd.DataFrame(result,columns=["title","item_url"])
  df = df.drop_duplicates()
  df["id"] =df.index
  df.to_excel(outfile,index=False)
def get_item_info(file,outfile):
  DEFAULT_FALSE = ""
  df = pd.read_excel(file)
  for i in df.index:
    id = df.loc[i,"id"]
    if os.path.exists(str(int(id))+".xlsx"):
      continue
    item_url = df.loc[i,"item_url"]
    url = item_url
    web = requests.get(url)
    soup = BeautifulSoup(web.text, "html.parser")
    # 图片
    imglink = soup.find_all("img", class_=re.compile("^gallery-image"))
    data = data_structs()
    data.info["title"] = df.loc[i,"title"]
    data.info["id"] = id
    data.info["item_url"] = item_url
    for a in imglink:
      image = image_structs()
      image.picture_url["image_id"] = a["id"]
      image.picture_url["picture_url"]=a["src"]
      print(image.picture_url)
      data.info["picture_url"].append(image.picture_url)
    print(data.info)
    # std_desc
    std_desc = soup.find("div", itemprop="description")
    try:
      strings_desc = []
      for ii in std_desc.stripped_strings:
        strings_desc.append(ii)
      strings_desc = "\n".join(strings_desc)
    except:
      strings_desc=DEFAULT_FALSE
    # description
    try:
      desc = soup.find('h2', text="Description")
      desc = desc.find_next()
    except:
      desc=DEFAULT_FALSE
    description=desc
    # information
    try:
      information = soup.find("h2", text='Information')
      desc = information
      desc = desc.find_next()
    except:
      desc=DEFAULT_FALSE
    information = desc
    # fitment
    try:
      fitment = soup.find('h2', text='Fitment')
      desc = fitment
      desc = desc.find_next()
    except:
      desc=DEFAULT_FALSE
    fitment=desc
    data.info["std_desc"] = strings_desc
    data.info["description"] = str(description)
    data.info["information"] = str(information)
    data.info["fitment"] = str(fitment)
    print(data.info.keys())
    singledf = json_normalize(data.info,"picture_url",['title', 'item_url', 'id', 'std_desc', 'description', 'information', 'fitment'])
    singledf.to_excel("test.xlsx",index=False)
    exit()
    # print(df.ix[i])
  df.to_excel(outfile,index=False)
# get_item_list("item_urls.xlsx")
get_item_info("item_urls.xlsx","item_urls_info.xlsx")

这里涉及到的几个Python模块都可以使用pip install命令进行安装,如:

pip install BeautifulSoup4
pip install xlrd
pip install openpyxl
Python 相关文章推荐
Python提取网页中超链接的方法
Sep 18 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python实现翻转数组功能示例
Jan 12 Python
python实现堆和索引堆的代码示例
Mar 19 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
Python基于百度云文字识别API
Dec 13 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 Python
python blinker 信号库
May 04 Python
深入浅析Python的类
Jun 22 #Python
基于python绘制科赫雪花
Jun 22 #Python
python3读取csv和xlsx文件的实例
Jun 22 #Python
django admin 后台实现三级联动的示例代码
Jun 22 #Python
python使用turtle库与random库绘制雪花
Jun 22 #Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 #Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 #Python
You might like
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
javascript 解析url的search方法
2010/02/09 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
python中abs&map&reduce简介
2018/02/20 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
党校学习思想汇报
2014/01/06 职场文书
团队精神口号
2014/06/06 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
爱心捐书倡议书
2015/04/27 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏