猿问

使用美丽汤的数据框问题

我使用美丽的汤抓取数据创建一个数据框。然而,有两个问题。

  1. 为什么for循环运行了2次?

  2. 如何去掉数据框上的括号?

导入 urllib.request 作为 req

from bs4 import BeautifulSoup

import bs4

import requests

import pandas as pd


url = "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()

结果是这样的:

数据帧输出


一只斗牛犬
浏览 72回答 1
1回答

慕桂英3389331

要获取有关公司的信息,您不必循环遍历soup,只需直接提取必要的信息即可。要去掉[..]括号,请使用.text属性:import requestsfrom bs4 import BeautifulSoupurl = '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                           Industry0  Brown-Forman Corporation (BF-B)  http://www.brown-forman.com  Consumer Defensive  Beverages—Wineries & Distilleries
随时随地看视频慕课网APP

相关分类

Python
我要回答