【问题标题】:Putting Dates into Data Frame将日期放入数据框中
【发布时间】:2021-12-26 14:07:52
【问题描述】:

我正在抓取这个网站“https://www.sbp.org.pk/ecodata/index2.asp”。然后使用下面的代码,我抓取文本和日期。现在我只想要今天的日期。

        import datetime
        import requests
        from bs4 import BeautifulSoup
        import pandas as pd
        from pandas import DataFrame
        import datetime as dt
        url = "https://www.sbp.org.pk/ecodata/index2.asp"
        r=requests.get(url)
        htmlContent = r.content
        soup = BeautifulSoup(htmlContent, 'html.parser')
        
        now = datetime.datetime.today()
        
        data=[]
        for c in soup.find_all("td"):
            data.append(c.text.strip())
        data
        
        # here I am scraping the only dates from the text
        
        date_today = []
        for _ in data:
            try:
                data_date = dt.datetime.strptime(_, '%b %d, %Y')
                data3=data_date.date()
                print(data3)
                date_today.append(data_date.date())
            except ValueError:
                continue
        date_today
        
        for d in date_today:
            if d == now:
                df = pd.DataFrame({'abc':d})
                print (df)
            else:
                print("no update")
        

这是代码。 date_today 变量包含日期。现在我只想要今天的日期,然后将其放入数据框中。 date_today 是列表形式

【问题讨论】:

    标签: python beautifulsoup screen-scraping


    【解决方案1】:

    您尝试初始化now 变量的方式存在问题(它包含日期和时间),您可以简单地使用date.today() 来获取当前日期,以及您创建@ 的部分987654323@(使用列的标量值时使用列表)。

    以下代码应该可以工作:-

    from datetime import date
    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    from pandas import DataFrame
    import datetime as dt
    
    url = "https://www.sbp.org.pk/ecodata/index2.asp"
    r=requests.get(url)
    htmlContent = r.content
    soup = BeautifulSoup(htmlContent, 'html.parser')
    
    #get today's date        
    now = date.today()
            
    data=[]
    for c in soup.find_all("td"):
        data.append(c.text.strip())
            
    # here I am scraping the only dates from the text
            
    date_today = []
    for _ in data:
        try:
            data_date = dt.datetime.strptime(_, '%b %d, %Y')
            data3=data_date.date()
            #print(data3)
            date_today.append(data_date.date())
        except ValueError:
            continue
    
            
    for d in date_today:
        if d == now:
            #use list when using scalar values for columns
            df = pd.DataFrame({'abc':[d]})
            print(df)
        else:
            print("no update")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多