Python max (дата) в списке - PullRequest
       4

Python max (дата) в списке

0 голосов
/ 13 сентября 2018

Я пытаюсь вернуть максимальную дату в списке из сообщения bs4.Вот что я получил до сих пор ..

import requests
from datetime import date, datetime, timedelta
from collections import OrderedDict, defaultdict
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq

con = requests.get("https://au.investing.com/currencies/aud-usd-historical-data/",
               headers={'User-Agent': 'Mozilla/5.0'})
odcon = OrderedDict()
content_page = soup(con.content, 'html.parser')
table = content_page.find('table', {'class': 'genTbl closedTbl historicalTbl'})
cols = [th.text for th in table.select("th")[1:]]
for row in table.select("tbody tr"):
    data = [td.text for td in row.select("td")]
    data[0] = datetime.strptime(data[0], '%b %d, %Y').strftime('%d/%m/%Y')
    print(max(data[0]))



Output looks like this for print(data[0])
13/09/2018
12/09/2018
11/09/2018
10/09/2018
09/09/2018
07/09/2018
06/09/2018
05/09/2018
04/09/2018
03/09/2018
02/09/2018
31/08/2018
30/08/2018
29/08/2018
28/08/2018
27/08/2018
26/08/2018
24/08/2018
23/08/2018
22/08/2018
21/08/2018
20/08/2018
19/08/2018
17/08/2018
16/08/2018
15/08/2018
14/08/2018
13/08/2018

Я бы хотел, чтобы максимальная дата в этом списке была возвращена / напечатана.

Это, вероятно, легко решить ... но я не могу понять это.Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

форматирование даты после сортировки списка дат:

from bs4 import BeautifulSoup as bs4
site = requests.get("https://au.investing.com/currencies/aud-usd-historical-data/", headers={'User-Agent': 'Mozilla/5.0'})
content_page = bs4(site.content, 'html.parser')
table = content_page.find('table', {'class': 'genTbl closedTbl historicalTbl'})
cols = [th.text for th in table.select("th")[1:]]

dates = []
for row in table.select("tbody tr"):
    data = [td.text for td in row.select("td")]
    dates.append(data[0])
dates.sort()
datetime.strptime(max(dates), '%b %d, %Y').strftime('%d/%m/%Y')

вывод:

'13/09/2018'

Кстати, cols здесь не используется.

0 голосов
/ 13 сентября 2018

Как насчет этого мода на ваш код

dateList = []

for row in table.select("tbody tr"):
    data = [td.text for td in row.select("td")]
    d = datetime.strptime(data[0], '%b %d, %Y').date()
    dateList = dateList + [d, ]

print max(dateList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...