Найти - Пользователи
Полная версия: импорт данных из HTML таблицы через lxml в MySQL
Начало » Python для новичков » импорт данных из HTML таблицы через lxml в MySQL
1 2 3 4
odnochlen
{code} на панели бебекода. Видишь его? Нажми на него.
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).
PooH
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).
Ну выводите для начала кортежи на экран перед помещением в базу. Увидите на каком ломается. Потом надо смотреть почему в этом элементов стало больше чем в запросе, может там в таблице лишняя ячейка или еще что.
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 ….
PooH
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 аргументов. В кортеже явно их больше. Покажите кортеж целиком. Юникод не причем, в сообщении об ошибке явно говориться: Не все переданные аргументы подставлены в строку.
ruff3d
заранее извиняюсь… но у меня полей 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')

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

а хотя не нужно оно ж в кавычки заключено…
PooH
ну и что я вам пытаюсь втолковать?!
>>> 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 полей в запросе
ruff3d
все-равно …
добавил
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).
PooH
Как я понимаю - он выводит несколько строчек, а потом вылетает? Или наоборот до этого выводил несколько строчек, а потом вылетал, а после переделки вылетает сразу. Если так, то возвращаемся к тому, с чего я и начинал - в макете таблиц в строках разное число ячеек. Больше предположений нет, если хотите высылайте мне на почту свой скрипт и пример хтмла, посмотрю.
ruff3d
вылетает после первого
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB