如何在xpath中排除另一个表中的表?
我有以下html文件:如何在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
<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()