2016-10-22 4 views
0

1つのWebサイトを解析してMySQLに書きたいと思います。特定のフィールドの下で各URLを解析するためには11のフィールドが必要です。JSONファイルをMySQLにマップ

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) 

は、ここで私はMYSQLにこのJSONをマッピングすることができますどのように私の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' 
}] 

です。ここに私が必要とする出力があります。 Here is what i needありがとうございます。

+2

1.これはJSONではありません。 2. 'json'をインポートしますが、使用しません。 3. 'urls2'を作成しますが、' urls'だけを使用します。 4. JSONファイルとコードの間の接続は何ですか? 5.単純なSQL挿入をしたいと思うように聞こえます。あなたは実際に試しましたか?私たちはここにあなたのためのコードを書くのではありません。 6.裸の 'except:pass'は恐ろしいアイデアであり、少なくとも例外を出力します。 –

答えて

0

これは、あなたが持っているデータをSQL挿入ステートメントに取り込むことができる、粗雑な方法の1つです。

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'")) 
関連する問題