Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2012 16:46:23

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

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

{code} на панели бебекода. Видишь его? Нажми на него.

Офлайн

#2 Июль 26, 2012 17:56:43

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).

Офлайн

#3 Июль 27, 2012 06:06:15

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

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

ruff3d
так вСе-таки что это ?? и как его Решить?
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).
Ну выводите для начала кортежи на экран перед помещением в базу. Увидите на каком ломается. Потом надо смотреть почему в этом элементов стало больше чем в запросе, может там в таблице лишняя ячейка или еще что.



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

Офлайн

#4 Июль 27, 2012 08:23:57

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

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

так выводил, просто кириллица в юникоде выводится, а цифровые значения - нормально… возможно это изза того поскольку юникод длинее чем строка.

print выводит такое

('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 ….

Отредактировано ruff3d (Июль 27, 2012 08:25:03)

Офлайн

#5 Июль 27, 2012 08:56:48

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

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

ruff3d
так выводил, просто кириллица в юникоде выводится, а цифровые значения - нормально… возможно это изза того поскольку юникод длинее чем строка.

print выводит такое

('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 ….

Вот вы опять все самое интересное спрятали, тут видно первые четыре аргумента, покажите остальные. В запросе у вас 7 аргументов. В кортеже явно их больше. Покажите кортеж целиком. Юникод не причем, в сообщении об ошибке явно говориться: Не все переданные аргументы подставлены в строку.



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

Офлайн

#6 Июль 27, 2012 10:36:22

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

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

заранее извиняюсь… но у меня полей 10 (у себя тоже указал 10) - сути не меняет.

выводит такое -


(u'279', u'2 (300), 21.04.08', u'00720', u'\u0422\u043e\u0432\u0430\u0440\u0438, \u0440\u043e\u0431\u043e\u0442\u0438, \u043f\u043e\u0441\u043b\u0443\u0433\u0438', u'\u0412\u041f \u0422\u0440\u0438\u043f\u0456\u043b\u044c\u0441\u044c\u043a\u0430 \u0422\u0415\u0421 \u041f\u0410\u0422 “\u0426\u0435\u043d\u0442\u0440\u0435\u043d\u0435\u0440\u0433\u043e”', u'\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0456 \u0442\u043e\u0440\u0433\u0438', u'\u043b\u0430\u043c\u043f\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u043d\u0456 - 22 \u043d\u0430\u0439\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u043d\u044f', u'\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0456 \u0437 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f\u043c \u043f\u0435\u0440\u0435\u043c\u043e\u0436\u0446\u044f', u'None', u'\u041f\u041f “\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0432\u0456\u0442\u043b\u043e\u0442\u0435\u0445\u043d\u0456\u043a\u0430”/ 174300 \u0433\u0440\u043d./ 09.04.08', u'None')

- это значение всех полей в одной строке…
я так понял тут сепаратор запятая “,”
может поменять сепаратор на другое что наглядней было… а то в полях тоже запятая есть…

а хотя не нужно оно ж в кавычки заключено…

Отредактировано ruff3d (Июль 27, 2012 11:25:49)

Офлайн

#7 Июль 27, 2012 11:24:58

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

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

ну и что я вам пытаюсь втолковать?!

>>> ls = (u'279', u'2 (300), 21.04.08', u'00720', u'\u0422\u043e\u0432\u0430\u0440\u0438, \u0440\u043e\u0431\u043e\u0442\u0438, \u043f\u043e\u0441\u043b\u0443\u0433\u0438', u'\u0412\u041f \u0422\u0440\u0438\u043f\u0456\u043b\u044c\u0441\u044c\u043a\u0430 \u0422\u0415\u0421 \u041f\u0410\u0422\u0426\u0435\u043d\u0442\u0440\u0435\u043d\u0435\u0440\u0433\u043e”', u'\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0456 \u0442\u043e\u0440\u0433\u0438', u'\u043b\u0430\u043c\u043f\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u043d\u0456 - 22 \u043d\u0430\u0439\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u043d\u044f', u'\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0456 \u0437 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f\u043c \u043f\u0435\u0440\u0435\u043c\u043e\u0436\u0446\u044f', u'None', u'\u041f\u041f\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0432\u0456\u0442\u043b\u043e\u0442\u0435\u0445\u043d\u0456\u043a\u0430”/ 174300 \u0433\u0440\u043d./ 09.04.08', u'None')
>>> len(ls)
0: 11
>>> for i, x in enumerate(ls):
...     print i, x
0 279
1 2 (300), 21.04.08
2 00720
3 Товари, роботи, послуги
4 ВП Трипільська ТЕС ПАТ “Центренерго”
5 Відкриті торги
6 лампи електричні - 22 найменування
7 Завершені з визначенням переможця
8 None
9 ПП “Електросвітлотехніка”/ 174300 грн./ 09.04.08
10 None
>>> 

11! 11! 11 элементов в кортеже, 10 полей в запросе



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

Офлайн

#8 Июль 27, 2012 11:33:22

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

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

все-равно …
добавил

sql='INSERT INTO t1 (num, vdz, ogol, galuz, zamovnik, procedura, predmet, rezultat, info, url, val) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
    for tr in doc.cssselect('table tr'):
        tup = tuple(x.text for x in tr.cssselect('td'))
        print tup
        cursor.execute(sql, tup)  

================================================================
ОШИБКА

Traceback (most recent call last):
File “D:\Program Files\AptanaStudio3\plugins\org.python.pydev_2.6.0.2012062121\pysrc\pydev_runfiles.py”, line 432, in __get_module_from_str
mod = __import__(modname)
File “E:\python\py2.7\first.py”, line 150, in <module>
urlfind(r,i,ids)
File “E:\python\py2.7\first.py”, line 107, in urlfind
cursor.execute(sql, tup)
File “e:\python27\lib\MySQLdb\cursors.py”, line 159, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string
ERROR: Module: first could not be imported (file: E:\python\py2.7\first.py).

Отредактировано ruff3d (Июль 27, 2012 11:37:16)

Офлайн

#9 Июль 27, 2012 11:51:25

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

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

Как я понимаю - он выводит несколько строчек, а потом вылетает? Или наоборот до этого выводил несколько строчек, а потом вылетал, а после переделки вылетает сразу. Если так, то возвращаемся к тому, с чего я и начинал - в макете таблиц в строках разное число ячеек. Больше предположений нет, если хотите высылайте мне на почту свой скрипт и пример хтмла, посмотрю.



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

Офлайн

#10 Июль 27, 2012 13:54:02

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

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

вылетает после первого

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version