python - 将 JSON 文件映射到 MySQL

标签 python mysql parsing web-crawler

我正在解析一个网站并想要写入 MySQL。特定字段下的每个url需要解析11个字段。

from bs4 import BeautifulSoup
    import requests
    import urllib.request
    import csv
    import pymysql

con = pymysql.connect(host = 'localhost',user = 'root',passwd = 'root',db = 'micro')

with open(r"C:\Users\New folder\url_list.txt") as f:

urls = [u.strip('\n') for u in f.readlines()]
page = 0

while page < 1000:
    try:
        soup = BeautifulSoup(requests.get(urls[page]).content, "html.parser")
        text = soup.select("head script[type=text/javascript]")[-1].text
        start = text.find('dataLayer =') + len('dataLayer =')
        end = text.rfind(';')
        rows = text[start:end].strip().split('\n')
    except:
        pass
    for d in rows:
        print(d)
    page = page + 1
    print(page)

这是我的 JSON 文件

[{
     'page':'ProductPage',
      'OAM':'False',
      'storeNum':'029',
      'brand':'ASUS',
      'productPrice':'199.99',
     'SKU':'576181',
     'productID':'443759',
     'mpn':'RT-AC3200',
     'ean':'886227780914',
      'category':'Wireless Routers',
     'isMobile':'False'
}]
[{
     'page':'ProductPage',
      'OAM':'False',
      'storeNum':'029',
      'brand':'Linksys',
      'productPrice':'79.99',
     'SKU':'244129',
     'productID':'432549',
     'mpn':'EA6350',
     'ean':'745883644780',
      'category':'Wireless Routers',
     'isMobile':'False'
}]

如何将这个 JSON 映射到 MYSQL。这是我需要的输出。 Here is what i need提前致谢。

最佳答案

这是一种使用现有数据填充 SQL 插入语句的粗略方法。

rows=[
[{
     'page':'ProductPage',
      'OAM':'False',
      'storeNum':'029',
      'brand':'ASUS',
      'productPrice':'199.99',
     'SKU':'576181',
     'productID':'443759',
     'mpn':'RT-AC3200',
     'ean':'886227780914',
      'category':'Wireless Routers',
     'isMobile':'False'
}],
[{
     'page':'ProductPage',
      'OAM':'False',
      'storeNum':'029',
      'brand':'Linksys',
      'productPrice':'79.99',
     'SKU':'244129',
     'productID':'432549',
     'mpn':'EA6350',
     'ean':'745883644780',
      'category':'Wireless Routers',
     'isMobile':'False'
}]
]


for d in rows:
    sql = "insert into tableName \n( "
    recordInfo=d[0]
    sql += ' '. join ([field for field in recordInfo] )
    sql += ') \nvalues ( '
    sql += ('***, '*len(recordInfo))[:-2]
    sql += ') **** \n('
    sql += ', '.join (["'%s'" % recordInfo[field] for field in recordInfo])
    sql += ')'
    print (sql)
    #~ con.execute(sql.replace('****', '%').replace('***',"'%s'"))

关于python - 将 JSON 文件映射到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193901/

相关文章:

ios - 在NSString中查找第一个字母并向后计数

python - 单元格之间没有线条的 Seaborn 热图

mysql - 从AWS lambda(Alexa技能后端)连接到外部Mysql数据库返回 "Access denied for user"消息

使用自定义双括号格式的 Python 模板安全替换

php - 如何在foreach中插入多条记录

mysql - 在 MySQL 中按组排名

javascript - 解析 HTML 字符串而不调用 JavaScript 中的网络操作

java - 使用流阅读器的问题

python - 如何在 Python 中从总体中生成随机样本?

python - 函数命名空间概念(赋值前引用)