【问题标题】:Can't parse html correctly / empty body after parsing解析后无法正确解析html/空正文
【发布时间】:2019-03-01 14:49:15
【问题描述】:

我遇到了一个奇怪的问题。我正在尝试解析以下 html:

问题是当我这样做时

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

我只会得到

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

而不是hiring-candidate-app下的所有内容。

例如,我想得到inside-content,但看起来我什至没有在回复中得到它。这个网页需要登录,我就是。

提前致谢!

【问题讨论】:

  • @wp78de 我无法尝试您的建议,我使用硒解决了它。谢谢!

标签: xpath scrapy css-selectors selector


【解决方案1】:

看起来你的 Xpath 抓住了正确的东西。但是您的问题可能与呼叫的“[0]”部分有关。我会删除它以获取 div 的全部内容。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 2018-05-17
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多