Я загружаю и прокручиваю на динамически загружаемых страницах. Примером является «стена» Facebook, которая загружает только следующие предметы, как только вы прокручиваете их где-нибудь рядом с дном.Скребок и разбор с Python - lxml с длинными Xpaths
Я прокручиваю до тех пор, пока страница не будет длинной, затем я скопирую исходный код, сохраню его как текстовый файл и продолжаю его разбор.
Я хотел бы извлечь определенные части веб-страницы. Я использовал lxml module в python, но с ограниченным успехом. На веб-сайте они показывают только примеры с довольно короткими Xpath.
Ниже приведен пример функции и путь, который дает мне имена пользователей, включенные на страницу.
usersID = elTree.xpath('//a[@class="account-group js-account-group js-action-profile js-user-profile-link js-nav"]')
это работает довольно хорошо, но я получаю некоторые errors (еще один пост моего), такие как:
TypeError: 'NoneType' object has no attribute 'getitem'
Я также смотрел на XPaths, что Firebug предоставляет. Это, конечно, намного дольше и очень специфично. Вот пример для reoccuring элемента на странице:
/html/body/div[2]/div[2]/div/div[2]/div[2]/div/div[2]/div/div/div/div/div[2]/ol[1]/li[26]/ol/li/div/div[2]/p
Часть к концу li[26]
показывает, что это 26-й пункт в списке того же элемента, которые находятся на том же уровне HTML дерева ,
Я хотел бы знать, как я могу использовать такие firebug-Xpaths с библиотекой lxml, или кто-нибудь знает, как лучше использовать Xpaths в целом?
Используя примеры кода HTML и инструменты like this для целей тестирования, Xpaths из Firebug вообще не работают. Этот путь просто смешон в опыте людей?
Is Очень специфичный для исходного кода? Существуют ли какие-либо другие инструменты, такие как Firebug, которые обеспечивают более надежный вывод для использования с lxml?
«xpath()' python's lxml - это полный процессор запросов XPath 1.0. Таким образом, оба пути, которые вы показываете, разрешены. Ваша ошибка означает, что на этом конкретном пути нет значения - либо фактических данных, либо путей не существует. Использование '//' в xpath ссылается на точное абсолютное местоположение (т. Е. Ярлык), в то время как '/' требует полного пути относительно корневого узла. – Parfait
Есть ли надежный способ использования регулярных выражений в Xpaths, например, добавление '*' для получения всех данных по пути или с определенного уровня? –