Форум сайта python.su
Ну и? Разбирайтесь почему. Нужный элемент есть в скачанном HTML?
Скачивайте с помощью urllib, а не lxml
Офлайн
0
вот живой код для проверки:
#!/usr/local/bin/python3 from lxml import html HTMLtree = html.parse("http://www.pleer.ru/cifrovye-fotoapparaty~69.html") name = HTMLtree.xpath("//h1[@class='disableH1']/text()") print("name={0}".format(name))
Офлайн
0
lorien
Скачивайте с помощью urllib, а не lxml
Офлайн
857
asphixлучше проэкранируй бекслеш'csv\{0}.csv'.format(p_filename)
asphixкомментируй через #, тройные кавычки как комментарий - для docstringcameras = {'pos1':62, 'pos2':69, 'pos3':157, 'pos4':44, 'pos5':19, 'pos6':2, 'pos7':45, 'pos8':11, 'pos9':1} """ code """ for cam in cameras:
for cam in cameras: s_lines = parse(url.format(cameras[cam])) save_csv("{0}_{1}".format(cam, len(s_lines)), s_lines)
for cam in cameras: s_lines = parse(url.format(cameras[cam])) print('parts:', cam, cameras[cam], url) print('joined1:', url.format(cameras[cam])) print('joined2:', "{0}_{1}".format(cam, len(s_lines))) print('list:', s_lines) input() save_csv("{0}_{1}".format(cam, len(s_lines)), s_lines)
Отредактировано py.user.next (Июнь 20, 2012 05:29:52)
Офлайн
0
py.user.nextпод никсами путь выглядит как ‘csv/{0}.csv’ - экранировка не обязательна. Для винды да, заэкранил.
лучше проэкранируй бекслеш
py.user.nextспасибо, поправил
комментируй через #, тройные кавычки как комментарий - для docstring
py.user.nextнет, не думаю. В моём случае порядок не принципиален.
думаешь, ключи словаря будут перебираться по порядку ?
py.user.nextкаталог один, в нём разные файлы.
у тебя функция сохранения использует один разделитель каталогов, тогда как они разные
py.user.nextпринципиально это ничего не изменило.. содержимое списка пустое..
прежде, чем сохранять в файл, вставь строку, которая на экране будет отображать подготовленные данные
#!/usr/local/bin/python # -*- coding: utf-8 -*- from lxml import html HTMLtree = html.parse("http://www.pleer.ru/cifrovye-fotoapparaty~69.html") name = HTMLtree.xpath("//h1[@class='disableH1']/text()") print "name=%s" % name
Отредактировано asphix (Июнь 20, 2012 11:05:38)
Офлайн
857
эту страницу скачай и сохрани в виде файла
открой интерпретатор третьего питона
импортируй lxml.etree и сделай дерево
к дереву применяй xpath, пока не получишь список
после этого переделаешь на скачивание
Отредактировано py.user.next (Июнь 20, 2012 13:27:28)
Офлайн
0
пока что одинаковый результат под любой системой дал следующий вариант:
from lxml import html from urllib.request import urlopen url = "http://www.pleer.ru/cifrovye-fotoapparaty~69.html" page = urlopen(url).read() doc = html.document_fromstring(page) name = doc.xpath("//h1[@class='disableH1']/text()") print("name={0}".format(name).encode('utf-8'))
Офлайн
857
asphixчто это за .encode() ?print("name={0}".format(name).encode('utf-8'))
asphixпуть нужно склеивать через os.path.join(), тогда это будет переносимо
под никсами путь выглядит как ‘csv/{0}.csv’ - экранировка не обязательна. Для винды да, заэкранил.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Html File</title>
</head>
<body>
<ul>
<li>Ref1:<br>
<a href="http://www.site1.com">Site1</a>
<li>Ref2:<br>
<a href="http://www.site2.com">Site2</a>
<li>Ref3:<br>
<a href="http://www.site3.com">Site3 a©b@c</a>
</ul>
</body>
</html>
>>> import lxml.html >>> with open('page.html') as fin: ... tree = lxml.html.parse(fin) # подать можно имя файла или файловый объект ... tree.xpath("//a") ... for node in tree.xpath("//a"): ... print node.text, '->', node.attrib['href'] ... tree.xpath("//a/text()") ... tree.xpath("//a/@href") ... [<Element a at b73e2e3c>, <Element a at b73e2e6c>, <Element a at b73e2e9c>] Site1 -> http://www.site1.com Site2 -> http://www.site2.com Site3 a©b@c -> http://www.site3.com ['Site1', 'Site2', u'Site3 a\xa9b@c'] ['http://www.site1.com', 'http://www.site2.com', 'http://www.site3.com'] >>>
Отредактировано py.user.next (Июнь 21, 2012 01:50:13)
Офлайн