Вы должны знать намного больше о содержимом веб-страницы, с которой вы копируете данные. Если вы просто слепо бросаете парсеры tag-tagend на странице, вы просто получите случайные куски текста.
Попробуйте распечатать всю страницу HTML (которую ваш скрипт записывает в переменную htmlText
), затем начните искать в тексте шаблоны, которые укажут на интересующие вас данные. Эти данные могут быть частью шаблон, это нормально. Биты текста внутри <>
s являются тегами HTML - причина, по которой при разборе текста включается метод makeHTMLTags
, состоит в том, что структура текста внутри тега может варьироваться в диком виде , с необязательными и неожиданными атрибутами, или атрибуты в неожиданном порядке, или с неожиданным верхним / нижним регистром, или с неожиданным пробелом - makeHTMLTags
покрывает все эти вещи, поэтому большинство веб-скребков, написанных с использованием pyparsing, используют этот метод для определения шаблона, который получает интересные данные. 1009 *
Попробуйте этот процесс: распечатайте htmlText
на бумаге. Используйте синий маркер, чтобы выделить данные, которые вы хотите. Затем используйте желтый маркер, который идентифицирует окружающие данные или теги, которые помогут найти эти данные. Теперь у вас есть шаблон для создания выражения pyparsing для извлечения этих данных. Вы уже начали использовать имя результатов (определение 'body' в вашем парсере) - это хорошая привычка, так держать. Пометьте все выражения для синего текста именами результатов, чтобы после сопоставления общего шаблона вы могли просто получить отдельные биты, используя имена.
Удачи!