gpt4 book ai didi

python - 网页抓取结果到数据框

转载 作者:行者123 更新时间:2023-11-30 22:35:45 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何获取我抓取的数据并使用 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

打印列表:

{'ProductId':'00000_000000005500059917','BrandName':'Nestle','FullDisplayName':'10 Pack Mini Rolo Bars','IsAgeRequired':false,'SizeLabel':'','Size':'10 x 45 ml','ProductUrl':'/en/product/mini-rolo-bars10-pack/00000_000000005500059917','ProductImageUrl':'https://az836796.vo.msecnd.net/media/image/product/en/medium/0005500059917.jpg','HasNewPrice':false,'PromotionName':null,'RegularPrice':6.49000,'SalesPrice':null}
{'ProductId':'00000_000000005574253356','BrandName':'Compliments','FullDisplayName':'100% Pure Frozen Concentrate Pulp Free Juice','IsAgeRequired':false,'SizeLabel':'','Size':'283 ml','ProductUrl':'/en/product/juice100--pure-frozen-concentrate-pulp-free/00000_000000005574253356','ProductImageUrl':'https://az836796.vo.msecnd.net/media/image/product/en/medium/0005574253356.jpg','HasNewPrice':false,'PromotionName':null,'RegularPrice':1.79000,'SalesPrice':null}

我试图以产品 ID、尺寸和常规价格为例,并将其转储到表中。我什至可以将整个键和值转储到数据框中,这样我就可以在 Excel 中使用它。

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

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

这会导致错误。任何帮助表示赞赏。我是这方面的菜鸟。

最佳答案

您需要将每个data-product转换为有效的Python字典,然后将它们全部合并到一个字典中,之后,您可以像这样转换为数据帧:

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文件:

writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Close the Pandas Excel writer and output the Excel file.
writer.save()

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

关于python - 网页抓取结果到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com