python 遍历html,在Python中用漂亮的汤循环遍历html

如果我看到table标签,我通常会让熊猫来做,您可以过滤掉不需要或不需要的列。

html = """

Header
1JohnJimRussia2-1

"""

import pandas as pd

df = pd.read_html(html, skiprows=1)

results = df[0]

编辑:

但是,如果您更关心实际的类属性,我可以提供两种选择。

选项:1

仍然使用熊猫解析表,但在此之前,请使用BeautifulSoup通过.decompose()消除不需要的列/标签/类(无论您要调用什么):

import pandas as pd

import bs4

html = """

Header
1JohnJimRussia2-1

"""

soup = bs4.BeautifulSoup(html, 'html.parser')

keep_list = ["table-name", "table-score"]

for data in soup.find_all('td'):

class_attr = data['class'][0]

if class_attr in keep_list:

continue

else:

soup.select("td."+class_attr)[0].decompose()

df = pd.read_html(str(soup), skiprows=1)

results = df[0]

输出:

print (results)

0 1 2

0 John Jim 2-1

选项:2

与其他解决方案类似,只需找到特定的类属性即可。

import bs4

html = """

Header
1JohnJimRussia2-1

"""

soup = bs4.BeautifulSoup(html, 'html.parser')

keep_list = ["table-name", "table-score"]

alpha = soup.find_all('td', class_=lambda x: x in keep_list)

for data in alpha:

print (data.text)

# or if wanted in list

results = [ data.text for data in alpha ]

输出:

John

Jim

2-1

或者,列表可以分为3行:

soup = bs4.BeautifulSoup(html, 'html.parser')

keep_list = ["table-name", "table-score"]

results = [ data.text for data in soup.find_all('td', class_=lambda x: x in keep_list)]

输出:

print (results)

['John', 'Jim', '2-1']

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值