首页 > 解决方案 > 如何使用 span 类进行网页抓取 python com?

问题描述

我正在尝试从此页面获取更新日期和时间。

如何从上次更新中获取日期和时间?

任何人都可以帮我解决这个问题吗?

    import requests 
    from bs4 import BeautifulSoup
    import datetime
    import re
    import platform
    import time
    import urllib3
    urllib3.disable_warnings()
    
    start_time = time.time()
    url = 'https://www.tesourodireto.com.br/titulos/precos-e-taxas.htm'
    r = requests.get(url, verify=False)
    now = datetime.datetime.now()
    now = now.strftime('%A, %B %d, %Y  %I:%M %p')
    
    r_html = r.text
    soup = BeautifulSoup(r_html, "html.parser")
    
    all = soup.find_all("div",{"class":"td-mercado-update"})
    all


**[<div class="td-mercado-update">
     <p class="td-mercado-text td-mercado-text--mobile">Última atualização:
                    <span class="td-mercado-text--bold td-mercado-text--bold--mobile"></span>
     </p>
     </div>]**

    
    print( soup.find("span", class_="td-mercado-text--bold td-mercado-text--bold--mobile")\["Última atualização:"\])

**> KeyError Traceback(最近调用

最后) in ----> 1 print(soup.find("span", class_="td-mercado-text--bold td-mercado-text--bold--mobile")["Última atualização:"] )

~\Anaconda3\lib\site-packages\bs4\element.py in __getitem__(self, key)
   1404         """tag[key] returns the value of the 'key' attribute for the Tag,
   1405         and throws an exception if it's not there."""
-> 1406         return self.attrs[key]
   1407 
   1408     def __iter__(self):

KeyError: 'Última atualização:'**

标签: pythonhtmlweb-scraping

解决方案


无需访问该网页的源代码,您可以直接从该网页用于获取数据的 API 获取数据,并以所需格式获取数据,请参阅以下代码, verify=False 由于该网站上的 HTTPS 错误而需要使用。

import requests
data=requests.get("https://www.tesourodireto.com.br/json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json",verify=False).json()
T=data["response"]["TrsrBondMkt"]["qtnDtTm"].split("T")
date=T[0].split("-")
hour=T[1][0:5].replace(":","h")
print(f"{date[2]}/{date[1]}/{date[0]} • {hour}min")

输出 输出 如果您有任何问题,请告诉我 :)


推荐阅读