【发布时间】:2020-04-21 03:37:14
【问题描述】:
我是 Python 的初学者,我正在尝试使用 BeautifulSoup 创建一个新的数据框来抓取网页。我正在关注一些在不同页面中工作的代码,但它在这里不起作用。我的最终数据表是空白的,所以它似乎没有附加。任何帮助表示赞赏。这就是我所做的:
from bs4 import BeautifulSoup
import requests
import pandas as pd
allergens = requests.get(url = 'http://guetta.com/diginn/allergens/')
allergens = BeautifulSoup(allergens.content)
items = allergens.find_all('div', class_ = 'menu-item-card')
final_table = {}
for item in allergens.find_all('div', class_ = 'menu-item-card'):
for row in item.find_all('h4', recursive = False)[0:]:
for column in row.find_all('p', class_ = 'menu-item__allergens'):
col_name = column['class'][0].split('__')[1]
if col_name not in final_table:
final_table[col_name] = []
final_table[col_name].append(column.text)
df_allergens = pd.DataFrame(final_table)
这不返回任何内容。没有错误,只是空括号。我能够单独检索每个元素,所以我认为这些项目应该可以工作,但显然我错过了一些东西。
编辑: 以下是输出需要的内容:
Item Name Allergens
Classic Dig | Soy
Item2 | allergen1, allergen2
Item3 | allergen2
【问题讨论】:
-
首先看这里,该网站加载了
JavaScript。bs4或requests不会帮你渲染JS,你可以使用像selenium这样的真实浏览器。也请edit您的问题并向我们展示所需数据的样本。我们可能有不同的解决方案 -
我添加了输出应该是什么。我希望第一列是项目名称,第二列是过敏原列表。
标签: python-3.x pandas beautifulsoup