2015-08-06 4 views
0

Я искал всю ночь, но я все еще не уверен, как выполнить эту работу. Я новичок в python, поэтому, пожалуйста, простите меня сначала, если я задаю несколько простых вопросов.Очистка .html отчетов и экспорт в виде файлов .txt

У меня есть три тысячи .html-файлов (все новое описание продукта, загруженное с доверенного веб-сайта), хранящиеся в одной папке, теперь я хотел бы очищать эти файлы один за другим (т. Е. Поддерживать только содержание/описание продукта и удалять теги и т. д.), а затем хранить каждый контент в виде одного файла .txt.

После прочтения нескольких Q & Как я уже писал, мне нужно использовать пакет lxml вместо красивого супа, потому что все файлы .html принадлежат высоконадежному источнику. Тем не менее, я не знаю, какую команду/параметр использовать в lxml я должен использовать, не могли бы вы любезно сообщить мне?

ответ

0

lxml - хороший выбор не только потому, что это хороший источник, но и его скорость. Просто учтите, что надежный источник не означает правильно отформатированную разметку, что имеет значение между библиотеками.

Если все страницы имеют одинаковую структуру, xpath выполнит эту работу. Сначала вам нужно получить xpath, который Chrome может сделать для вас, просто сделайте «Inspect Element» -> щелкните правой кнопкой мыши на элементе html, который вам нужно проанализировать, -> выберите «Копировать xpath».

В вашем коде python после запроса страницы. Возьмите html и преобразуйте его:

from lxml import html 
tree = html.fromstring("htmlString") #you can switch this with the path of the html file 
name = tree.xpath('XPATH GOES HERE') 

Это вернет объект списка в большинстве случаев. Чтобы получить только текст из атрибута, добавьте '/ text()' в конец xpath. Варианты xpath от Chrome иногда отличаются от того, что читает python (у меня была эта проблема с таблицами), поэтому, если он ничего не возвращает, немного поиграйте с xpath, чтобы убедиться, что он работает.

В качестве альтернативы,

Вы можете "перемещаться" структуру HTML-файла вместо использования XPath с

.find_class('css_class_Name') .getnext() .getchildren() 

, например, а затем использовать

.text_content() 

для извлечения текста из элемента html. Я рекомендую вам прочитать эти docs, чтобы узнать, какой именно вам нужно использовать.

+0

Спасибо, но есть ли способ автоматизировать весь процесс, т. Е. Мне не нужно каждый раз копировать «xpath» для нового документа? У меня больше 3000 файлов, еще раз спасибо – fccog

+0

Если у вас есть они в файле, и все они следуют стандартным именам (file1.html, file2.html и т. Д.), Запустите весь этот скрипт внутри цикла for. Не забудьте импортировать os или запросы в зависимости от того, получаете ли вы его с жесткого диска или онлайн соответственно. – santybm

Смежные вопросы