gpt4 book ai didi

Python Beautifulsoup htmltableextraction 问题

转载 作者:行者123 更新时间:2023-12-04 08:58:04 26 4
gpt4 key购买 nike

我正在尝试从有点非结构化的 html 表中提取数据。
HTML 表结构如下(示例数据)-
HTML Table structure as below (sample data)
能够提取数据但面临“ID”列的问题。 “ID”是 2 列的单个标题,整个表的结构也不一致。
运行以下代码 -

#Libraries 
import urllib3, re
import requests
from bs4 import BeautifulSoup,Comment
import pandas as pd
import numpy as np
import re

group_techniques = []
#Loop through the URLs we loaded above
for b in base_url:
html = requests.get(b).text
soup = BeautifulSoup(html, "html.parser")

#provide the table name we want to scrape
group_table = soup.find('table', {"class" : "table techniques-used table-bordered mt-2"})

#try clause to skip any url with missing/empty tables
try:
#loop through table, grab each of the 5 columns shown
for row in group_table.find_all('tr'):
cols = row.find_all('td')
if len(cols) == 5:
group_techniques.append((b, cols[0].text.strip(), cols[1].text.strip(), cols[2].text.strip(),
cols[3].text.strip(),cols[4].text.strip()))
except: pass
#convert output to new array
group_tech_array = np.asarray(group_techniques)

#convert array to dataframe
df_grp_tech = pd.DataFrame(group_tech_array)

#rename columns, check output
df_grp_tech.columns = ['Domain','Tech_ID','sub_id','Name','Use']
当我们比较实际输出与预期输出时 -
  • 我们缺少原始 html 表中的第 3 行(T1560)
  • 我们缺少原始 html 表中的第 5 行(T1059)
    是因为表结构复杂

  • 提取后的实际表结构
    enter image description here
    预期表结构
    enter image description here
    ** HTML 表格 ** Here is the link "Table - Techniques Used"

    最佳答案

    至少在这种情况下,使用 Pandas 要简单得多:

    tables = pd.read_html('https://attack.mitre.org/groups/G0004/')
    tables[1]
    就是这样。输出是您的目标表。

    关于Python Beautifulsoup htmltableextraction 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63704822/

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