我有一个抓取域名的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
是公司?我没有包含标头,因为在每次迭代中它都会打印标头,而我却不想要它。
答案 0 :(得分:1)
应该是这样的:
mycursor = mydb.cursor()
mycursor.execute("INSERT INTO table_name(domain, date, company) VALUES ('0vh-cl0ud.sg', '2017-10-12', 'KEY-SYSTEMS GMBH'))"
应在抓取数据后将其放入循环中。请通过评论中的上述链接来更好地了解该过程。