Не могу разобрать html правильно / пустое тело после разбора - PullRequest
0 голосов
/ 26 сентября 2018

У меня странная проблема.Я пытаюсь разобрать следующий HTML:

enter image description here

Проблема заключается в том, что, когда я делаю

response.xpath('//div//section//div[@id="hiring-candidate-app"]')[0].extract()

Я получаю только

'<div id="hiring-candidate-app"></div>'

вместо всего содержимого в hiring-candidate-app.

Я хотел бы получить, например, inside-content, нопохоже, я даже не получаю это в ответе.Эту веб-страницу нужно авторизовать, что я и делаю.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Похоже, что рассматриваемые элементы расположены на <iframe> и, следовательно, живут в другом контексте.Вам нужно активировать или переключиться на контекст iframe, например.использование JavaScript для взаимодействия с iframe и документом внутри него, например

//Note: Assigning document.domain is forbidden for sandboxed iframes, i.e. on stacksnippets
//document.domain = "https://stacksnippets.net";

var ifrm = document.getElementById("myFrame");
// reference to iframe's window
//var win = ifrm.contentWindow;
// reference to document in iframe
var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
// reference an element via css selector in iframe
//var form = doc.getElementById('body > div > div.message');
// reference an element via xpat in iframe
var xpathResult = doc.evaluate("/html/body/div/div[1]", doc, null, XPathResult.ANY_TYPE, null);
<iframe id="myFrame" src="https://stacksnippets.net" style="height:380px;width:100%"></iframe>

Тем не менее, как вы можете видеть, когда вы запускаете разрезанный, взаимодействия между документами возможны, только если документы имеют одинаковое происхождение.Существуют и другие, более сложные методы, такие как postMessage , которые предоставляют средства взаимодействия между доменами.

0 голосов
/ 26 сентября 2018

Похоже, ваш Xpath захватывает правильную вещь.Но ваша проблема может быть связана с частью вызова «[0]».Я бы удалил это, чтобы получить полное содержание div.

...