将结果上传到数据帧

2024-09-21 09:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力想办法利用pandas把我收集的数据转换成一个数据帧

我从一个杂货店网站上搜集数据作为实验。使用Beautiful soup,一旦我导入URL并使用Beautiful soup,我就创建了一个循环,用div标记拉取某个类中的任何内容。然后我使用下面的代码来提取下面的数据:

import urllib2
import requests
import pandas as pd
from bs4 import BeautifulSoup
import pickle

link=requests.get("https://www.iga.net/en/online_grocery/frozen_grocery")
soup = BeautifulSoup(link.content, 'html.parser')
##print soup.prettify()
bowl=soup.find_all('div',class_='js-product js-equalized js-addtolist-container js-ga')

for bowls in bowl:
    list=bowls.get('data-product')
    print list

打印列表:

^{pr2}$

我试图以productID、size和regular price为例,将其转储到一个表中。我甚至可以将整个键和值转储到一个数据框中,这样我就可以在excel中处理它了。在

我尝试执行以下操作,但出现错误(添加到最后一个块的数据帧中:

import urllib2
import requests
import pandas as pd
from bs4 import BeautifulSoup
import pickle

link=requests.get("https://www.iga.net/en/online_grocery/frozen_grocery")
soup = BeautifulSoup(link.content, 'html.parser')
##print soup.prettify()
bowl=soup.find_all('div',class_='js-product js-equalized js-addtolist-container js-ga')

for bowls in bowl:
    list=bowls.get('data-product')
    df = pd.DataFrame(list)
    print df

这会导致错误。感谢任何帮助。我是新手。在


Tags: 数据importpandasgetjslinkproductrequests
1条回答
网友
1楼 · 发布于 2024-09-21 09:34:37

您需要将每个data-product转换为一个有效的python字典,然后将所有这些字典合并到一个字典中,然后您可以像这样转换为dataframe:

import urllib2
import requests
import pandas as pd
from bs4 import BeautifulSoup
import pickle
import json
import collections

link=requests.get("https://www.iga.net/en/online_grocery/frozen_grocery")
soup = BeautifulSoup(link.content, 'html.parser')
##print soup.prettify()
bowl=soup.find_all('div',class_='js-product js-equalized js-addtolist-container js-ga')

super_dict = collections.defaultdict(list)

for bowls in bowl:
    data=bowls.get('data-product')
    data = data.replace("\'","\"") #json.loads accepts only double quotes for json properties, so replace ' with "
    dict_data = json.loads(data) #convert to valid python dictionary 
    for k, v in dict_data.iteritems():  # d.items() in Python 3+
        super_dict[k].append(v) #merge all dictionary
df = pd.DataFrame(dict(super_dict))
df

输出将是您想要的数据帧:

enter image description here

更新:

如果要查看excel文件中的数据框,可以用以下代码写入excel文件:

^{pr2}$

然后您可以打开文件pandas_simple.xlsx,以检查excel格式的数据。在

相关问题 更多 >

    热门问题