为了账号安全,请及时绑定邮箱和手机立即绑定

使用美丽汤的数据框问题

使用美丽汤的数据框问题

一只斗牛犬 2023-09-12 15:09:53
我使用美丽的汤抓取数据创建一个数据框。然而,有两个问题。为什么for循环运行了2次?如何去掉数据框上的括号?导入 urllib.request 作为 reqfrom bs4 import BeautifulSoupimport bs4import requestsimport pandas as pdurl = "https://finance.yahoo.com/quote/BF-B/profile?p=BF-B"root = requests.get(url)soup = BeautifulSoup(root.text, 'html.parser')records = []for result in soup:name = soup.find_all('h1', attrs={'D(ib) Fz(18px)'})website = soup.find_all('a')[44]sector = soup.find_all('span')[35]industry = soup.find_all('span')[37]records.append((name, website, sector, industry))df = pd.DataFrame(records, columns=['name', 'website', 'sector', 'industry'])df.head()结果是这样的:数据帧输出
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

要获取有关公司的信息,您不必循环遍历soup,只需直接提取必要的信息即可。要去掉[..]括号,请使用.text属性:


import requests

from bs4 import BeautifulSoup



url = 'https://finance.yahoo.com/quote/BF-B/profile?p=BF-B'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')


all_data = []


all_data.append({

    'Name': soup.h1.text,

    'Website': soup.select_one('.asset-profile-container a[href^="http"]')['href'],

    'Sector': soup.select_one('span:contains("Sector(s)") + span').text,

    'Industry': soup.select_one('span:contains("Industry") + span').text

})


df = pd.DataFrame(all_data)

print(df)

印刷:


                              Name                      Website              Sector                           Industry

0  Brown-Forman Corporation (BF-B)  http://www.brown-forman.com  Consumer Defensive  Beverages—Wineries & Distilleries



查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 49 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信