FF Xpather to Nokogiri - Могу я просто скопировать и вставить? - PullRequest
0 голосов
/ 24 сентября 2011

Я делал это вручную, а затем застрял и не могу понять, почему это не работает. Я скачал xpather и он дает мне: / html / body / center / table / tbody / tr [3] / td / table как путь к элементу, который я хочу. Я вручную подтвердил, что это правильно, но когда я вставляю его в свой код, все, что он делает, это возвращает nil

Вот мой код:

a = parentdoc.at_xpath("//html/body/center/table/tbody/tr[3]/td/table[1]")
puts a

Если я сделаю что-то вроде этого:

a = parentdoc.at_xpath("//html/body/center")
puts a

Я получаю огромный кусок текста со страницы. Я могу продолжать добавлять элементы, пока не нажму tbody, тогда он снова вернет ноль. Я даже попробовал что-то вроде: // html / body / center / table / * / tr [3], и это сделало то же самое, вернув nil

Чего мне не хватает?

1 Ответ

2 голосов
/ 25 сентября 2011

Ваша проблема в том, что Firefox вставляет элемент <tbody>, которого нет в HTML. Когда вы используете xpather, он работает с HTML, который использует браузер (а не с необработанным HTML, который возвращает ycombinator.com), и находит следующий путь:

//html/body/center/table/tbody/tr[3]/td/table

Nokogiri будет работать с необработанным HTML, так что вы хотите это

//html/body/center/table/tr[3]/td/table

Когда я применяю этот XPath к URL в вашем комментарии:

doc.at_xpath('//html/body/center/table/tr[3]/td/table').text

Я получаю этот вывод:

"csoghoian 1 hour ago  | link | parent2 responses:1. Chrome is the only major browser not to ...
...