无法在beautiful soup中正确获取时间戳

goqiplq2  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(304)

请在此处输入图片说明,请参阅所附图片。我正在尝试获取时间戳和下面10#的内容,如下面代码中的图像和预期输出所示,但是我无法获取“40分钟前”类型的文本。相反,我得到的是这种格式的“08-04-2021 16:48:34”。

from bs4 import BeautifulSoup
    import requests

    URL="https://trends24.in/india/"
    html_text=requests.get(URL)
    soup= BeautifulSoup(html_text.content,'lxml')
    results = []

    job_elem=soup.findAll(attrs={'class': 'trend-card'})
    for j in job_elem:
        print(j.find('h5').get_text())

    for i in soup.select('#trend-list li'):
         d = dict()
         d[i.a.text] = ''
         try:
             val = i.select_one('.tweet-count').text
         except:
             val = "NA"
         finally:
             d[i.a.text] = val
             results.append(d)
             print(d)

**Output:**

08-04-2021 16:48:34
08-04-2021 15:54:30
08-04-2021 15:01:07
...
{'#AskNivetha': 'NA'}
{'#TikaUtsav': 'NA'}
{'#VakeelSaabFestivalBegins': '62K'}
...

**expected output :**

40 minutes ago  

{'#AskNivetha': 'NA'}
{'#TikaUtsav': 'NA'}
{'#VakeelSaabFestivalBegins': '62K'}
{'ANMOL SUSHANT': '33K'}
{'#TheBigBull': 'NA'}
{'#IPL2021': '73K'}
{'nidra ley uv creations': '64K'}
{'Chief Ministers': 'NA'}
{'B. True 48MP Camera': 'NA'}
{'conan': '51K'}

1 hour ago

{'#AskNivetha': 'NA'}
{'#VakeelSaabFestivalBegins': '50K'}
{'NIDRA LEY UV CREATIONS': '59K'}
{'#SecretOfHappyLiving': 'NA'}
{'#MeditateToRaiseWillpower': 'NA'}
{'#HappinessMantra': 'NA'}
{'ANMOL SUSHANT': 'NA'}
{'Tika Utsav': 'NA'}
{'Chief Ministers': 'NA'}
{'conan': '46K'}

我还尝试获取时间戳和10个内容标题。如所附的屏幕截图所示。

unguejic

unguejic1#

这是存储在中的日期时间信息的格式。禁用javascript,您将看到:

你在网页上看到的是 data-timestamp 当javascript在网页中运行时被美化的属性值。更具体地说,当调用以下命令时:

T24.prettyDate = function(t) {
    var e = new Date(1e3 * t),
        n = ((new Date).getTime() - e.getTime()) / 1e3,
        a = Math.floor(n / 86400);
    return isNaN(a) || a < 0 ? "" : 0 === a && ((n < 900 ? "just now" : n < 1800 && "few minutes ago") || n < 3600 && Math.floor(n / 60) + " minutes ago" || n < 7200 && "1 hour ago" || n < 86400 && Math.floor(n / 3600) + " hours ago") || 1 === a && "Yesterday" || a < 7 && a + " days ago" || a < 31 && Math.ceil(a / 7) + " weeks ago" || 31 < a && Math.ceil(a / 30) + " months ago"
}

您可以编写自己的函数,将上述内容作为逻辑指南,并使用它,或者使用selenium自动化浏览器。

相关问题