一旦所有页面都循环并且值追加到列表中后,如何将我的抓取值存储到数据框中?

时间:2018-11-12 20:12:44

标签: python python-3.x web-scraping beautifulsoup request

当前,我的数据帧正在打印2个数据帧,但我希望它只是一个包含所有从omp_name_lists and comp_rating_lists传递的值的数据帧。我知道函数正在逐页传递值,所以我想知道如何告诉python等待所有页面值追加,然后create_dataframe

def get_data(get_comp_name,get_comp_rating):


    comp_name_lists, comp_rating_lists = [],[]
    for i, v in  zip(get_comp_name, get_comp_rating):
        comp_name_lists.append(i.a.text)
        comp_rating_lists.append(v.text)

    return create_dataframe(comp_name_lists,comp_rating_lists)

def create_dataframe(comp_name_lists,comp_rating_lists): # This is where 
    """This gets all of our data that we scraped and stores into a pandas dataframe"""
    df = pd.DataFrame({'CompanyName' : comp_name_lists, 'CompanyRating' : comp_rating_lists})
    df = df.reset_index(drop=True)
    print(df)

所需的输出:

  A              B
0 a              3
1 b              7
2 c              1
3 d              2
4 e              8
5 f              9
6 g              7
7 h              8

1 个答案:

答案 0 :(得分:1)

如果要成为一个包含所有值的数据框,则应该有一个全局变量  因为除非您重新启动脚本,否则它将不会重新初始化。如果您通过return create_dataframe(comp_name_lists,comp_rating_lists)传递值,它将创建一个独立于其他值的新空间,并且df的值为空,这意味着您无法以这种方式完成期望的工作。我认为,在完成数据提取后创建一个数据框

resultset = {'CompanyName' : [], 'CompanyRating' : []}

def get_data(get_comp_name,get_comp_rating):


    comp_name_lists, comp_rating_lists = [],[]
    for i, v in  zip(get_comp_name, get_comp_rating):
        comp_name_lists.append(i.a.text)
        comp_rating_lists.append(v.text)

    resultset["CompanyName"] += comp_name_lists
    resultset["CompanyRating"] += comp_rating_lists

def create_dataframe(data): # This is where 
    """This gets all of our data that we scraped and stores into a pandas dataframe"""
    df = pd.DataFrame(data)
    df = df.reset_index(drop=True)
    print(df)