Pandas датафрейм вставляет каждое значение в базу данных mysql - PullRequest
0 голосов
/ 30 марта 2020

У меня есть 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 это компания? Я не включаю заголовок, так как в каждой итерации он печатает заголовок, и я не хочу его.

1 Ответ

1 голос
/ 30 марта 2020

Это должно быть что-то вроде этого:

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

Этот кусок должен быть помещен в l oop после того, как данные будут очищены. Пожалуйста, go по вышеупомянутым ссылкам в комментариях, чтобы лучше понять процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...