【问题标题】:Creating a pandas DataFrame from list of lists containing data from bs4 object从包含 bs4 对象数据的列表列表中创建 pandas DataFrame
【发布时间】:2020-02-29 16:19:20
【问题描述】:

我希望创建一个包含从网站上抓取的数据的 DataFrame。数据被放置在两个列表中 - 职位名称和链接到工作申请页面的 URL。我的目标是然后将它们传递到一个列表中以创建一个 DataFrame,如 https://www.geeksforgeeks.org/different-ways-to-create-pandas-dataframe/ 所示。

list_job_titles = []
list_job_URLs = []
for a in soup.find_all('a', href = re.compile("work-placement-internship")):
    URL_from_soup = (a['href'] + " ")
    title_from_soup =(a.text.strip())
    list_job_titles.append(title_from_soup)
    list_job_URLs.append(URL_from_soup)
    time.sleep(0.1)
data = [[list_job_titles],[list_job_URLs]]
df = pd.DataFrame(data, columns=['Job title', 'URL'])

我已经测试了脚本的网络抓取方面,它从站点获取了所有需要的信息。但是,在创建 DataFrame 时出现错误:

ValueError: 2 列传递,传递的数据有 1 列

然后我尝试传入一个列标题:

df = pd.DataFrame(data, columns=['Job title'])

我得到的输出:

职位名称

0 [一些职位...

1 [https://someURL...

知道如何将其分成两列,一列用于标题,一列用于 URL

干杯

【问题讨论】:

    标签: python python-3.x pandas dataframe beautifulsoup


    【解决方案1】:

    试试这个:

    替换:

    df = pd.DataFrame(data, columns=['Job title', 'URL'])
    

    与:

    df = pd.DataFrame({"Job title": list_job_titles, "URL": list_job_URLs})
    

    【讨论】:

      【解决方案2】:

      试试这样的:

      df = pd.DataFrame({"Job Title": list_job_titles, "Job URLs": list_job_urls})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 2021-08-31
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 2019-02-20
        • 1970-01-01
        相关资源
        最近更新 更多