正确的xpath返回空结果

时间:2016-01-04 22:13:51

标签: xpath scrapy

我想从此网页http://www.changning.sh.cn/jact/front/front_mailpublist.action?sysid=9

上的表中搜索数据

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

enter image description here

假设我想在左上角单元格中提取文本LM2015122827458,我使用了angular.module('dataApp') .factory('UserService', function () { var User = $resource(ENV.API_URL + '/user/:email', { email: '@email' }, { add: { method: 'POST', url: ENV.API_URL + '/user/:email/medication/:medicationId', params: { email: '@email', dataId: '@medicationId' } } }); User.addData = function (dataList) { var promiseArray = []; angular.forEach(dataList, function (data) { User.add({ email: currentUser.email, dataId: data._id }).$promise.then(function success(response) { promiseArray.push(response.$promise); }, function error(response) { promiseArray.push(response.$promise); promiseArray.push(response.$promise); }); }); return $q.all(promiseArray); }; }); 。只返回一个空列表。我尝试了另外的Xpath表达式,包括灵感来自Chrome"复制Xpath,"但没有运气。我甚至使用response.xpath("//tr[@class = 'tr_css']/td[1]/text()").extract()提取页面上的所有文本,看看LM2015122827458是否存在。它不是。那么,这是一个Xpath无法处理的页面吗?或者我做错了什么?非常感谢你!

1 个答案:

答案 0 :(得分:0)

这个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);

希望它会对你有所帮助:)。