2015-05-28 2 views
0

Я пытаюсь собрать информацию с веб-страницы, которая имеет противоречивую HTML, например:Синтаксический несовместимым HTML с помощью XPath

<ul><li>Item #1</li></ul><ul><li>sub Item #1</li></ul> 

и что все в порядке, я использовать выражение XPath

//div[@id="content"]/ul/li/text() 

и он выполняет эту работу (кроме того, что не собирает информацию из подпункта № 1.,

Также изменяется HTML, и это по-другому:

<dl><dd><ul><li>Item #1</li></ul></dd></dl><dl><dd><ul><li>sub Item #1</li></ul></dd></dl> 

Ну, я пытаюсь собрать Item # 1 и sub Item # 1. Но с этим несогласованным HTML я не могу найти выражение XPath, которое позволит мне собрать информацию в любом случае, не могли бы вы мне помочь?

Там всегда будет список, элемент # 1 и подпункт # 1 будет всегда находиться внутри <ul><li>

+0

Как вы получаете HTML? Можете ли вы дать нам ссылку на источник? –

+0

Да @LegoStormtroopr Я пробую эти две страницы: http://es.wikiquote.org/wiki/Los_Simpson и http://es.wikiquote.org/wiki/Friends – Javittoxs

ответ

0

Вы можете попробовать использовать descendant ось (//), чтобы выбрать ul/li/text() независимо от того, насколько глубоко вложен в постоянный предок/родитель. Например, если предположить, что предок/родителя ul/li всегда div имеющий id равна "content":

//div[@id="content"]//ul/li/text()