Python Html: извлечение частей текста из HTML-файла - PullRequest
0 голосов
/ 07 ноября 2018

В настоящее время я работаю над проектом, где я скачал несколько связанных html-файлов и собираю из них данные. Одна вещь, которую я заметил, заключается в том, что, хотя общий формат html-файлов одинаков, иногда в разных файлах используются разные теги для хранения сходной информации.

Например, в одном файле это может быть:

<html>
<head>
<p> Title: The GodFather </p>
<p> Author: Mario Puzo </p>
</head>
<html>

А в другом примере это может быть:

<code><html>
<head>
<p> Heading </p>
<pre> Ebook from xyz site: Please donate to our foundation at www.abc.com
Title: The GodFather
Author: Mario Puzo

Я могу с уверенностью сказать, что " Title: " и " Author: " являются общими для всех html-файлов. Я хочу извлечь текст, следующий за " Заголовок: " и " Автор: ". Я полагаю, я использую красивый суп для извлечения каждого файла HTML. Но чтобы извлечь Заголовок и Автор , было бы лучше использовать регулярные выражения?

1 Ответ

0 голосов
/ 07 ноября 2018

Даже не заморачивайтесь с красивым супом, просто используйте регулярное выражение:

re.findall(r'(?<=Author:).*?(?=<)', html.replace('\n', ''))
>>> [' Mario Puzo']

re.findall(r'(?<=Title:).*?(?=<)', html.replace('\n', ''))
>>> [' The GodFatherAuthor: Mario Puzo']

Это будет соответствовать Авторам, при условии, что оно может не работать для некоторых ваших заголовков, потому что оно также содержало «Автор» перед другим тегом (показанным выше), и в этом случае вы можете сделать title.split('Author')[0] для всех просканированных заголовков, так как если Author отсутствует в строке, этот метод не изменит строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...