Guest User

Untitled

a guest
Oct 21st, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.70 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import lxml
  4. from lxml.html.clean import Cleaner
  5.  
  6. __author__ = 'Ramil'
  7.  
  8. class HtmlParser:
  9.  
  10.     """ штука, для превращения html документ в подобие plain_text-а """
  11.  
  12.     #кортеж специальных тэгов(нужен для автоматизации)
  13.     #порядок имеет значение
  14.     special_tags = ( "nobr" )
  15.  
  16.     @staticmethod
  17.     def parse_html(path):
  18.         """ производит парсинг html странички, находящийся по адресу path, и возвращает словарь в формате
  19.         удобном для класса Indextor, т.е {[тэг][весь текст в документе, который находился в окружение этого тэга]} """
  20.         html = lxml.html.parse( path ).getroot()
  21.  
  22.  
  23.         """ clean_html очищает html от всякой дряни типа комментов, мета-данных,
  24.            скриптов и т.д. Учитывая, что в индексации нам они вообще не понадобятся, мы их сразу выкинем.
  25.            из всех возможных выкидываний мы оставим только структуру, чтобы было хоть какая-то
  26.            подобие древовидной структуры"""
  27.         cleaner = Cleaner(style=True, page_structure=False )
  28.         cleaned_html = cleaner.clean_html( html )
  29.  
  30.         result = dict()
  31.         #получаем текст по тэгам, весь оставшийся тэг записываетя по тэгом simple
  32.         f = open(r'1.txt', 'w')
  33.         txt1 = html.xpath('/html/body/div/div[12]/div/div[3]/div/form/table[2]/tbody/tr/td[2]/a/nobr')
  34.         tag_content_text = list()
  35.         for element in txt1:
  36.             text = element.text_content().strip()
  37.             if text != "":
  38.                 tag_content_text.append( text )
  39.                 f.write( '\r\n' + text.encode('utf-8'))
  40.  
  41.        # for tag in HtmlParser.special_tags:
  42.        #    #список полученных строк находящихся между тэгом tag
  43.        #     tag_content_text = list()
  44.        #     for element in cleaned_html.findall(".//" + tag):
  45.        #         text = element.text_content().strip()
  46.        #         if text != "":
  47.        #             tag_content_text.append( text )
  48.        #             f.write( text.encode('utf-8'))
  49.  
  50.        #         # не уверен, что это правильно, но пусть пока будет
  51.        #         element.drop_tree()
  52.  
  53.  
  54.         f.close()
  55.  
  56.         return cleaned_html
Add Comment
Please, Sign In to add comment