解析后无法正确解析html /正文为空

时间:2018-09-25 22:11:37

标签: xpath scrapy css-selectors selector

我面临一个奇怪的问题。我正在尝试解析以下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 :(得分:0)

您的Xpath似乎抓住了正确的东西。但是您的问题可能与呼叫的[0]部分有关。我将其删除以获取div的全部内容。

答案 1 :(得分:0)

看起来有问题的元素位于<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方法,提供了交互跨域的方法。