gpt4 book ai didi

python - 如何从表格行中抓取特定单词?

转载 作者:行者123 更新时间:2023-12-04 09:40:54 24 4
gpt4 key购买 nike

我只想使用 python 从下表中抓取代码
enter image description here
如图所示,您可以看到我只想 CPT、CTC、PTC、STC、SPT、HTC、P5TC、P1A、P2A P3A、P1E、P2E、P3E。此代码可能会不时更改,例如添加 P4E 或删除 P1E。
上表的 HTML 代码为:

<table class="list">
<tbody>
<tr>
<td>
<p>PRODUCT<br>DESCRIPTION</p>
</td>
<td>
<p><strong>Time Charter:</strong> CPT, CTC, PTC, STC, SPT, HTC, P5TC<br><strong>Time Charter Trip:</strong> P1A, P2A, P3A,<br>P1E, P2E, P3E</p>
</td>
<td><strong>Voyage: </strong>C3E, C4E, C5E, C7E</td>
</tr>
<tr>
<td>
<p>CONTRACT SIZE</p>
<p></p>
</td>
<td>
<p>1 day</p>
</td>
<td>
<p>1,000 metric tons</p>
</td>
</tr>
<tr>
<td>
<p>MINIMUM TICK</p>
<p></p>
</td>
<td>
<p>US$ 25</p>
</td>
<td>
<p>US$ 0.01</p>
</td>
</tr>
<tr>
<td>
<p>FINAL SETTLEMENT PRICE</p>
<p></p>
</td>
<td colspan="2" rowspan="1">
<p>The floating price will be the end-of-day price as supplied by the Baltic Exchange.</p>
<p><br><strong>All products:</strong> Final settlement price will be the mean of the daily Baltic Exchange spot price assessments for every trading day in the expiry month.</p>
<p><br><strong>Exception for P1A, P2A, P3A:</strong> Final settlement price will be the mean of the last 7 Baltic Exchange spot price assessments in the expiry month.</p>
</td>
</tr>
<tr>
<td>
<p>CONTRACT SERIES</p>
</td>
<td colspan="2" rowspan="1">
<p><strong><strong>CTC, CPT, PTC, STC, SPT, HTC, P5TC</strong>:</strong> Months, quarters and calendar years out to a maximum of 72 months</p>
<p><strong>C3E, C4E, C5E, C7E, P1A, P2A, P3A, P1E, P2E, P3E:</strong> Months, quarters and calendar years out to a maximum of 36 months</p>
</td>
</tr>
<tr>
<td>
<p>SETTLEMENT</p>
</td>
<td colspan="2" rowspan="1">
<p>At 13:00 hours (UK time) on the last business day of each month within the contract series</p>
</td>
</tr>
</tbody>
</table>

您可以从以下网站链接中查看代码
https://www.eex.com/en/products/global-commodities/freight

最佳答案

如果您的用例是抓取所有文本:

timecharter

你要诱导WebDriverWait对于想要的visibility_of_element_located()您可以使用以下任一Locator Strategies :

  • 使用 CSS_SELECTOR :
    driver.get('https://www.eex.com/en/products/global-commodities/freight')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "article div:last-child table>tbody>tr td:nth-child(2)>p"))).text)
  • 使用 XPATH :
    driver.get('https://www.eex.com/en/products/global-commodities/freight')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h3[text()='Contract Specifications']//following::table[1]/tbody/tr//following::td[1]/p"))).text)
  • 控制台输出:
    Time Charter: CPT, CTC, PTC, STC, SPT, HTC, P5TC
    Time Charter Trip: P1A, P2A, P3A,
    P1E, P2E, P3E
  • 备注 :您必须添加以下导入:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC


  • 更新 1

    如果要单独提取 CPT、CTC、PTC、STC、SPT、HTC、P5TC 和 P1A、P2A、P3A 和 P1E、P2E、P3E,可以使用以下解决方案:
  • 打印 CPT、CTC、PTC、STC、SPT、HTC、P5TC
    #element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "article div:last-child table>tbody>tr td:nth-child(2)>p")))
    element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//h3[text()='Contract Specifications']//following::table[1]/tbody/tr//following::td[1]/p")))
    print(driver.execute_script('return arguments[0].childNodes[1].textContent;', element).strip())
  • 打印 P1A、P2A P3A
    #element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "article div:last-child table>tbody>tr td:nth-child(2)>p")))
    element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//h3[text()='Contract Specifications']//following::table[1]/tbody/tr//following::td[1]/p")))
    print(driver.execute_script('return arguments[0].childNodes[4].textContent;', element).strip())
  • 打印 P1E、P2E、P3E
    //element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "article div:last-child table>tbody>tr td:nth-child(2)>p")))
    element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//h3[text()='Contract Specifications']//following::table[1]/tbody/tr//following::td[1]/p")))
    print(driver.execute_script('return arguments[0].lastChild.textContent;', element).strip())


  • 更新 2

    一起打印所有项目:
  • 代码块:
    driver.get('https://www.eex.com/en/products/global-commodities/freight')
    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h3[text()='Contract Specifications']//following::table[1]/tbody/tr//following::td[1]/p")))
    first = driver.execute_script('return arguments[0].childNodes[1].textContent;', element).strip()
    second = driver.execute_script('return arguments[0].childNodes[4].textContent;', element).strip()
    third = driver.execute_script('return arguments[0].lastChild.textContent;', element).strip()
    for list in (first,second,third):
    print(list)
  • 控制台输出:
    CPT, CTC, PTC, STC, SPT, HTC, P5TC
    P1A, P2A, P3A,
    P1E, P2E, P3E
  • 关于python - 如何从表格行中抓取特定单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62338176/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com