понедельник, 21 февраля 2011 г.

Скрипт разбора сайта на Python

Вот маленький кусочик кода для разбора сайтов удобным для меня методом.
Забывается всё, всё напоминается, но с какими усилиями.
Решил оставить маленький след на будующее.


# -*- coding: utf-8 -*-
import urllib
import lxml.html
from lxml import etree
from lxml.html import parse
from lxml.html import tostring as html_tostring

#Выбераем место откуда брать
#url = "http://duhi.kiev.com.ua"
url = "./duhi/file.htm"
#Указываем где хранятся ссылки на категории
#Сдесь используются регулярные выражения,
#аттрибут начинается с parent...
menu_path = "/html/body/div/div/div/div/div/table[2]/tbody/tr/td/div[2]/ul/li[re:test(@class, '^parent.*$', 'i')]"
#Загружаем документ и получаем его DOM модель
tree = parse(url)
regexpNS = "http://exslt.org/regular-expressions"
#Получаем элементы категорий
categories = tree.xpath(menu_path, namespaces={'re':regexpNS})
#При переборе категорий сразу создаем XML документ
#куда сохраняем результаты в более универсальный вид.
xcategories = etree.Element ('categories')
doc = etree.ElementTree(xcategories)
for category in categories:
    #Получаем текст
    title = categories[0].xpath("./a/text()")[0]
    href = categories[0].xpath("./a/@href")[0]
    #Формируем документ
    xcategory = etree.SubElement(xcategories, 'category')
    xtitle = etree.SubElement(xcategory, 'title')
    xtitle.text = title
    xhref = etree.SubElement(xcategory, 'href')
    xhref.text = unicode(href)
#Сохраняем результаты в файл
file = open('categoties.xml', "w")
file.write(html_tostring(doc))
file.close()



Комментариев нет:

Отправить комментарий