繁体   English   中英

如何在模式匹配后提取以下行

[英]How to extract the following lines after pattern match

网络源是这样的:

<div class="MT12">
    <table class="tblchart" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <th rowspan="2" width="100" align="left" valign="top">Date</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Open</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">High</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Low</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Close</th>
            <th colspan="2" style="text-align:center;" valign="top">- SPREAD -</th>
        </tr>
        <tr>
            <th width="100" style="text-align:right;" valign="top">(High-Low)</th>
            <th width="100" style="text-align:right;" valign="top" class="last">(Open-Close)</th>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-24</td>
            <td valign="top" style="text-align:right;">12269.25</td>
            <td valign="top" class="b_12vv" style="text-align:right">12283.70</td>
            <td valign="top" style="text-align:right;">12202.10</td>
            <td valign="top" style="text-align:right;">12214.55</td>
            <td valign="top" style="text-align:right;">81.60</td>
            <td align="right" valign="top" class="last" style="text-align:right;">54.70</td>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-23</td>
            <td valign="top" style="text-align:right;">12235.45</td>
            <td valign="top" class="b_12vv" style="text-align:right">12287.15</td>
            <td valign="top" style="text-align:right;">12213.25</td>
            <td valign="top" style="text-align:right;">12262.75</td>
            <td valign="top" style="text-align:right;">73.90</td>
            <td align="right" valign="top" class="last" style="text-align:right;">-27.30</td>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-20</td>
            <td valign="top" style="text-align:right;">12266.45</td>
            <td valign="top" class="b_12vv" style="text-align:right">12293.90</td>
            <td valign="top" style="text-align:right;">12252.75</td>
            <td valign="top" style="text-align:right;">12271.80</td>
            <td valign="top" style="text-align:right;">41.15</td>
            <td align="right" valign="top" class="last" style="text-align:right;">-5.35</td>
        </tr>
    </table>
</div>

我想为每个日期获取以下数字:例如,我必须获取特定日期 (2019-12-24) 的数字 12269.25、12283.70、12202.10 和 12214.55。 然后继续下一个给定的日期。

我面临困难,因为我需要在页面中的每个日期之后选择接下来的 4 行(其 xpath 与上面显示的不太相关)。 日期的范围可以从单个日期到 100-200 个日期。

任何人都可以帮忙处理同样的 webdriver 代码片段。

非常感谢

这能满足您的需求吗

from simplified_scrapy.simplified_doc import SimplifiedDoc 
html = '''<div class="MT12">
    <table class="tblchart" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <th rowspan="2" width="100" align="left" valign="top">Date</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Open</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">High</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Low</th>
            <th rowspan="2" width="100" style="text-align:right;" valign="top">Close</th>
            <th colspan="2" style="text-align:center;" valign="top">- SPREAD -</th>
        </tr>
        <tr>
            <th width="100" style="text-align:right;" valign="top">(High-Low)</th>
            <th width="100" style="text-align:right;" valign="top" class="last">(Open-Close)</th>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-24</td>
            <td valign="top" style="text-align:right;">12269.25</td>
            <td valign="top" class="b_12vv" style="text-align:right">12283.70</td>
            <td valign="top" style="text-align:right;">12202.10</td>
            <td valign="top" style="text-align:right;">12214.55</td>
            <td valign="top" style="text-align:right;">81.60</td>
            <td align="right" valign="top" class="last" style="text-align:right;">54.70</td>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-23</td>
            <td valign="top" style="text-align:right;">12235.45</td>
            <td valign="top" class="b_12vv" style="text-align:right">12287.15</td>
            <td valign="top" style="text-align:right;">12213.25</td>
            <td valign="top" style="text-align:right;">12262.75</td>
            <td valign="top" style="text-align:right;">73.90</td>
            <td align="right" valign="top" class="last" style="text-align:right;">-27.30</td>
        </tr>
        <tr>
            <td align="left" valign="top">2019-12-20</td>
            <td valign="top" style="text-align:right;">12266.45</td>
            <td valign="top" class="b_12vv" style="text-align:right">12293.90</td>
            <td valign="top" style="text-align:right;">12252.75</td>
            <td valign="top" style="text-align:right;">12271.80</td>
            <td valign="top" style="text-align:right;">41.15</td>
            <td align="right" valign="top" class="last" style="text-align:right;">-5.35</td>
        </tr>
    </table>
</div>'''
doc = SimplifiedDoc(html)
table = doc.getElement(tag='table',value='tblchart')
trs = table.trs.notContains('<th') # get tr
for tr in trs:
  tds = tr.tds # get all td
  data = [td.text for td in tds]
  print (data[0],data[1],data[2],data[3],data[4])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM