Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2012 10:07:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

ruff3d
sql='INSERT INTO T1(num, name, val, dom,kod,sin,rar)' VALUES (%s,%s,%s,%s,%s,%s,%s)'
Тут ошибка, обрати внимание на ковычки



Офлайн

#2 Июль 26, 2012 10:08:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

ruff3d
if i=7: i=0
Оператор присваивания в условии работать не будет



Офлайн

#3 Июль 26, 2012 10:21:56

ruff3d
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

эти мелочи я уже сам увидел…
На такое у меня APTANA ругается)) так что на мелкие нюансы не стоит обращать внимание…

вы лучше скажите про лучший алгоритм разбора таблицы… чем мой…

Офлайн

#4 Июль 26, 2012 10:22:02

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

Что-то из вашего кода не очень понятно что за преобразования вы пытаетесь с ячейками сделать, ну а в базу примерно так(создание курсора опустил), данные всей пачкой в базу

SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)"
data = []
for trs in doc.cssselect('table tr'):
    for tr in trs:
        data.append(tuple(x.text for x in tr.cssselect('td')))
cursor.executemany(sql, data)
построчно в базу
SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)"
for trs in doc.cssselect('table tr'):
    for tr in trs:
        cursor.execute(sql, tuple(x.text for x in tr.cssselect('td'))



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Июль 26, 2012 12:00:18

ruff3d
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL


вылазит ошибка типа…

cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))
File “e:\python27\lib\MySQLdb\cursors.py”, line 159, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string

Офлайн

#6 Июль 26, 2012 13:18:33

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

ruff3d
вылазит ошибка типа…

cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))
File “e:\python27\lib\MySQLdb\cursors.py”, line 159, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string

Значит кол-во столбцов меньше чем полей в базе. Вы просили пример, я его вам дал. Прикручивайте сами, тем более что я ваших данных в глаза не видел.

PS: Момент, посмотрел еще раз ваш исходник, если это
for trs in doc.cssselect('table tr')
иттерация по строкам таблицы, тогда вот так
SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)"
for tr in doc.cssselect('table tr'):
     cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Июль 26, 2012 13:32:12)

Офлайн

#7 Июль 26, 2012 16:34:16

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

ruff3d
sql='INSERT INTO T1(num, name, val, dom,kod,sin,rar)' VALUES (%s,%s,%s,%s,%s,%s,%s)'
Скуля. Осиль параметризированные запросы.

Офлайн

#8 Июль 26, 2012 16:35:24

ruff3d
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

все отлично… только строки в юникоде

('365', ‘2 (300), 21.04.08’, ‘01534’, u'\u041c\u0435\u0442\u0430\u043b\u0438 \u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0456\u044f

как в кортеже это сразу исправить…?

Офлайн

#9 Июль 26, 2012 16:36:17

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

А надо ли? Мускул юникод не принимает?

Офлайн

#10 Июль 26, 2012 16:43:22

ruff3d
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

импорт данных из HTML таблицы через lxml в MySQL

    cursor.execute(sql, tup)
  File "e:\python27\lib\MySQLdb\cursors.py", line 159, in execute
    query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
ERROR: Module: first could not be imported (file: E:\python\py2.7\first.py).

Отредактировано ruff3d (Июль 26, 2012 17:00:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version