熊猫数据框在mysql数据库中插入每个值

时间:2020-03-30 06:17:11

标签: python mysql python-3.x pandas web-scraping

我有一个抓取域名的python脚本。我只是解析了json响应,因为它呈现了html代码。我使用熊猫来读取html并获取body,这是html的内容。我尝试打印它,然后得到正确的值。现在我明白了,我想将每个结果保存在mysql数据库中。我该如何实现?

这是我的剧本

mydb = mysql.connector.connect(
   host="localhost",
   user="root",
   passwd="",
   database='domainscrape'
)

mycursor = mydb.cursor()
print(mydb)


pageNumber = 0
while True:
    driver.implicitly_wait(3)
    driver.get('https://reversewhois.domaintools.com/?ajax=mReverseWhois&call=ajaxGetPreviewPage&q=%5B%5B%5B%22whois%22%2C%222%22%2C%22VerifiedID%40SG-Mandatory%22%5D%5D%5D&o='+str(pageNumber))
    time.sleep(3)
    pre = driver.find_element_by_tag_name("pre").text
    data = json.loads(pre)
    if data['body']:
        table = data['body']
        tables = pd.read_html(table,skiprows=1)
        df = tables[-1]
        print(df.to_string(index=False))
        pageNumber += 1
        continue
    else:
        break

我得到了这样的结果

  0vh-cl0ud.sg  2017-10-12                                 KEY-SYSTEMS GMBH
  0vh-cloud.sg  2017-10-12                                 KEY-SYSTEMS GMBH
  0vhcloud.sg   2017-10-12                                 KEY-SYSTEMS GMB

试图将其保存到csv文件中,但效果很好

df.to_csv('Domains.csv', mode='a', sep=',',index=False)

但是我不想将csv导入mysql。我只想直接将行插入其中的现有mysql表中。

我该如何格式化它,例如0vh-cl0ud.sg是域2017-10-12是日期而KEY-SYSTEMS GMBH是公司?我没有包含标头,因为在每次迭代中它都会打印标头,而我却不想要它。

1 个答案:

答案 0 :(得分:1)

应该是这样的:

mycursor = mydb.cursor()
mycursor.execute("INSERT INTO table_name(domain, date, company) VALUES ('0vh-cl0ud.sg', '2017-10-12', 'KEY-SYSTEMS GMBH'))"

应在抓取数据后将其放入循环中。请通过评论中的上述链接来更好地了解该过程。