"过滤请求,仅显示6分钟及以下时刻"

2024-10-02 12:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试筛选所有<;=6分钟,并输出时间、层级和;链接到用户配置文件

问题是我将字符与int混合在一起,因此我需要删除字符并格式化int以使输出看起来更漂亮。然后我可以进入第二层,然后是个人资料

import requests
from bs4 import BeautifulSoup

rBarb = requests.get("https://eu.diablo3.com/en/rankings/season/17/rift-barbarian").text
soup = BeautifulSoup(rBarb, "html.parser")
pContainer = soup.find(id=("ladders"))
#print(pContainer)
rRiftTime = pContainer.find_all(class_="cell-RiftTime")
print(rRiftTime)

这就是我的自动取款机。任何帮助都将不胜感激

谢谢和亲切的问候


Tags: importlt链接时间find字符requestsint
1条回答
网友
1楼 · 发布于 2024-10-02 12:33:21

您可以使用datetime.timedelta对象根据时间轻松筛选结果:

import requests
from bs4 import BeautifulSoup
import re
from datetime import timedelta

rBarb = requests.get("https://eu.diablo3.com/en/rankings/season/17/rift-barbarian").text
soup = BeautifulSoup(rBarb, "lxml")

# parse the data
data = []
for tr in soup.select('#ladders-table tr')[1:-1]:
    d = [td.text.strip() for td in tr.select('td')] + [tr.select_one('a')['href']]
    g = re.search(r'(\d+)m\s([\d.]+)s', d[3])
    d.append(timedelta(minutes=int(g[1]), seconds=float(g[2]))) # convert string to timedelta object for easy filtering
    data.append(d)

# filter data for any results < 6 minutes
filtered = [d for d in data if d[-1] < timedelta(minutes=6)]

for d in filtered:
    print(d)

印刷品:

['993.', 'Soulnsane', '100', '5m 37.033s', '06-Jun-2019 19:58:49', '/en/profile/Soulnsane-2303/hero/64459758', datetime.timedelta(0, 337, 33000)]

相关问题 更多 >

    热门问题