【发布时间】: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