Python中文
首页
教程
问答
标签
搜索
登录
注册
Xpath碎片结果不符合预期
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试获取前面标记的值。以下是我正在做的:</p> <p>html页面的结构:</p> <pre class="lang-html prettyprint-override"><code>... <tr class="destaque no-hover"> <td class="periodo" colspan="6">2020.1</td> </tr> <tr class="linhaPar"> <td>Text1</td> <td align="center">01</td> <td align="right">312h</td> <td align="center">3T12</td> </tr> <tr class="linhaImpar"> <td>Text2</td> <td align="center">01</td> <td align="right">12h</td> <td align="center">5M12</td> </tr> ... <tr class="destaque no-hover"> <td class="periodo" colspan="6">2016.1</td> </tr> <tr class="linhaPar"> <td>Text7</td> <td align="center">01</td> <td align="right">2h</td> <td align="center">2N12</td> </tr> <tr class="linhaImpar"> <td>Text8</td> <td align="center">01</td> <td align="right">32h</td> <td align="center">4T12</td> </tr> ... <tr class="destaque no-hover"> <td class="periodo" colspan="6">2014.2</td> </tr> <tr class="linhaPar"> <td>TextN-1</td> <td align="center">01</td> <td align="right">2h</td> <td align="center">2N12</td> </tr> <tr class="linhaImpar"> <td>TextN</td> <td align="center">01</td> <td align="right">32h</td> <td align="center">4T12</td> </tr> </code></pre> <p>所以,我试图获得这些<code>tr classes="linhaPar|linhaImpar"</code>中每一个的信息</p> <pre class="lang-py prettyprint-override"><code>for i in response.xpath('//tr[@class="linhaPar" or @class="linhaImpar"]') _aux = i.xpath('./td[1]') </code></pre> <p>但是,我也需要这些<code>td[@class="periodo"]</code>,所以我对xpath很感兴趣</p> <pre class="lang-py prettyprint-override"><code># I've tried this, but return a list of elements that matches, not the close one, as I want _p = _aux.xpath('./preceding::tr[td[@class="periodo"]') # I've also tried this, but won't work _p = _aux.xpath('./preceding::tr[td[@class="periodo"] and position()=1]') </code></pre> <p><strong>已解决</strong></p> <p>也许当我提出这个问题时,我还不够清楚。不同数量的tr放在一起时<code>periodo</code>会发生变化。我尝试搜索的每一种方法,都会返回一个可能的结果列表或nada。为了解决这个问题,我已经尝试了在<EM>“for循环xPath”< EEM>:</P>中考虑^ {CD3>}的解决方案。 <pre class="lang-py prettyprint-override"><code>_p = "" for i in response.xpath('//tr[@class="linhaPar" or @class="linhaImpar" or @class="destaque no-hover"]'): # Check if it's a td with period if 'destaque no-hover' == i.xpath('./@class').get(): _p = i.xpath('./td/text()').get() continue # Force to go to the next one </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>此XPath:</p> <pre><code>'//tr[@class="linhaPar" or @class="linhaImpar" or td[@class="periodo"]]' </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
9 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
5 回答
在Python3中使用Script=argv
2 回答
在python3中使用selenium webdriver进行未解析的回溯
2 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
9 回答
在Python3中使用Selenium和Requests模块从网页获取文件
9 回答
在python3中使用SIGINT终止函数
9 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
10 回答
在python3中使用smtplib发送XML内容
10 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
3 回答
在python3中使用sounddevice和numpy编写wav文件
10 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
9 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
4 回答
在python3中使用SQLite的FTS3/4
2 回答
在Python3中使用struct.calcsize()和len()有区别吗?
2 回答
在python3中使用substring函数时发生TypeError
2 回答
在Python3中使用Tkinter entry小部件写入串行设备
1 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
3 回答
在python3中使用tkinter的子帧
8 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
5 回答