Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xpath中排除另一个表中的表?_Xpath_Scrapy - Fatal编程技术网

如何在xpath中排除另一个表中的表?

如何在xpath中排除另一个表中的表?,xpath,scrapy,Xpath,Scrapy,我有以下html文件: <table class="pd-table"> <caption> Tech </caption> <tbody> <tr data-group="1"> <td> Electrical </td> <td> Design </td> <tr data-group=&qu

我有以下html文件:

<table class="pd-table">
<caption> Tech </caption>
<tbody>
    <tr data-group="1">
        <td> Electrical </td>
        <td> Design </td>
    <tr data-group="1">
        <td> Output </td>
        <td> Function </td>
    <tr data-group="7">
        <td> EMC </td>
        <table>
        <tbody>
            <tr>
                <td> EN 6547 ESD </td>
                <td> EN 8901 ESD </td>
    <tr data-group="8">
        <td> Weight [8] </td>
        <td> 27.7 </td>
任何其他方式都是受欢迎的:)

我想得到的另一个数据是,在没有之前的数据的情况下,得到所有剩余的数据


有办法吗?:)

您使用的Xpath使用了很多不需要的双斜杠。 . 使用双斜杠越少,它的性能越好。 所以只需像这样使用单斜杠:

//table[@class="pd-table"]/tbody/tr/td/table/tr/td/text()
选择具有两个祖先的td的另一种方法::table

//td[count(ancestor::table)=2]/text()
这就引出了第二个问题的答案:

//td[count(ancestor::table)=1]/text()
另一种可能性是:

//table[@class="pd-table"]/tbody/tr/td/text()
或者(假设第二个选项卡没有带@data group的tr):


因此,您可以看到,有许多Xpath通向罗马;-)

看起来
标签在
数据组-7
中未正确关闭。。。 无论如何,在这种情况下,您可以使用
contains()
text()=“一些精确的文本”


“我想获取的另一个数据是获取所有剩余的数据,而不是之前隔离的数据”,您的确切意思是什么?我想排除第二个表,其中是EN 65647 ESD和EN 8901 ESD。从htmlHow获取关于我的答案的所有剩余信息:?这对你有用吗。如果是这样的话,请接受。谢谢你,你所有的建议都有效。。。
//table[@class="pd-table"]/tbody/tr/td/text()
//tr[@data-group]/td/text()
response.xpath('//td[contains(text(), "EMC")]').css('td~table tbody td::text').extract()