【问题标题】:Pandas dataframe insert every value in mysql databasePandas 数据框在 mysql 数据库中插入每个值
【发布时间】:2020-03-30 06:17:11
【问题描述】:

我有一个爬取域名的 python 脚本。我只是解析了 json 响应,因为它呈现 html 代码。我使用 pandas 读取 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 是公司?我不包括标题,因为在每次迭代中它都会打印标题并且我不想要它。

【问题讨论】:

  • 我的理解是您有一个数据框,并且您想要创建一个新表或写入(更新)到 mysql 数据库中的现有表。如果是这种情况,我强烈建议您减少问题以仅关注这一方面。可重现并专注于特定方面的问题,可以更快地得到回答,而且通常会有更多的人尝试回答。
  • 好的,先生@CypherX
  • this 的可能 DUPLICATE

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


【解决方案1】:

应该是这样的:

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

这块应该在数据被抓取后放入循环中。请通过上述 cmets 中的链接更好地了解该过程。

【讨论】:

  • 但是我怎样才能得到它的值呢?像一个索引
  • 创建一个包含域、日期和公司列的表。使用 auto_increment 属性创建另一列“索引”。这样您就可以继续将公司添加到表中。我希望我对您所询问的“价值观”有正确的理解
猜你喜欢
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 2023-03-22
  • 2015-03-10
  • 2017-12-30
  • 2016-10-04
  • 2016-03-25
  • 2023-03-19
相关资源
最近更新 更多