【问题标题】:Correct xpath returns empty result正确的 xpath 返回空结果
【发布时间】:2016-04-08 15:17:57
【问题描述】:

我想从这个网页http://www.changning.sh.cn/jact/front/front_mailpublist.action?sysid=9的表格中抓取数据

在编写蜘蛛之前,我在 Scrapy shell 中测试了我的 Xpath 表达式,但遇到了一个问题:Xpath 无法从表格中获取任何文本。

假设我要提取左上角单元格中的文本 LM2015122827458,我使用了response.xpath("//tr[@class = 'tr_css']/td[1]/text()").extract()。只返回了一个空列表。我尝试了替代 Xpath 表达式,包括受 Chrome “copy Xpath”启发的表达式,但没有运气。我什至用response.xpath("//text()")提取页面上的所有文本,看看是否有LM2015122827458。不是。那么,这是不是 Xpath 无法处理的页面呢?还是我做错了什么?非常感谢!

【问题讨论】:

  • 表格内容很可能是用 Javascript 加载的,所以如果你只是抓取 HTML 源,它们是不可用的。你可能想使用像 ScrapyJS (Splash) 这样的东西。
  • 感谢您的建议,马蒂亚斯。这也是我怀疑的。但是如何确定数据是否加载了 Javascript?我确实在头部元素中找到了这些。 这是否意味着数据是用Javascript加载的?

标签: xpath scrapy


【解决方案1】:

这个 Xpath 对我来说很好用:-

//tr[@class='tr_css'][1]/td[@class='text-center'][1]

以下代码在 java 中的工作对我来说工作正常:-

    driver.get("http://www.changning.sh.cn/jact/front/front_mailpublist.action?sysid=9");
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    String a = driver.findElement(By.xpath("//tr[@class='tr_css'][1]/td[@class='text-center'][1]")).getText();
    System.out.println(a);

希望对你有帮助:)

【讨论】:

  • 舒巴姆,感谢您的回答!但是你能通过你的 Xpath 得到任何东西吗?我在下面的代码中使用了它,但它仍然返回一个空列表。 response.xpath("//tr[@class='tr_css'][1]/td[@class='text-center'][1]")。很遗憾我不懂 Java,所以我不能从你的第二个代码中受益。
猜你喜欢
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 2012-04-11
  • 2016-02-06
  • 2017-05-09
相关资源
最近更新 更多