簡體   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