python - 如何使用 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:'**
解决方案
无需访问该网页的源代码,您可以直接从该网页用于获取数据的 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")
推荐阅读
- node.js - Which one of these methods would be faster?
- python - 使用 google 样式的文档字符串键入注释
- bash - 将命令结果存储在变量更改结果中
- sql - 可编辑表的数据库设计
- apache - 我的 .htaccess 文件中存在与 SEO 友好 URL 相关的问题
- python - 在数据框中搜索数字时,它显示:“numpy.int64”类型的参数不可迭代。如何解决?
- python - Python numpy 2D数组对某些索引求和
- javascript - 如何删除画布上两个透明形状的交集?
- python - 在 Python 中,当您可以采用默认参数时,为什么要使用“val = param 或 None”?
- android - admob_flutter 包是否支持中介?