python beautifulsoup 如何抓取不规则表格的内容

 我叫梁家耀_312 发布于 2022-10-29 15:28

在爬一个网站数据的时候发现,旧的页面采用的表格和现在的格式不一样,这到不算大问题,只是旧式表格采用的是表格格式并不规则。因网站登陆本身需要账号,就不提供网址了。
具体如下:
新式:

旧式:

在旧式表中中,列名行与数据第一行有6个td标签,其余仅有5个td标签。
表格中的tr标签与td标签均没有特别的属性用做区分。

目前我的处理方式是:
新式:
读列名行,按顺序做一个列表例如:['厂家','备注','单位','变化']。
之后每行数据 按顺序制作成一个字典例如{'厂家':'ABC','备注':'ABC'}
然后插入到我的数据库中。
旧式:
方法类似,只是我要每行 判断cells的数量 来确定读哪部分。

我的问题是:
请问 有没有更好的办法,将表格中的数据按照格式读取出来,甚至能处理旧式表格这样的布局?

旧式表格:

    
    

产品

厂家

/公斤

/跌

产地

备注

WackerChemie

480

-

德国

 

Hemlock Semiconductor

450

-

美国

 

Tokuyama Corporation

460

-

日本

 

MEMC Electronic Materials,Inc

450

-

美国

 

MitsubishiPolysilicon

460

-

日本

 

REC Group

430

-

美国

 

DC Chemical

430

-

韩国

 

。。我想把新式的表格也发出来。可惜这些里面各种属性太多了 超过限制了。

2 个回答
  • 学一下pandas
    redad_html(url,match='你想要的表格里的字符')
    这样就可以直接得到你想要的表格的数据内容。非常爽。

    2022-10-31 00:50 回答
  • 如果你能提供html源码,就好办了~


    你的html源码不完整,补上<table>标签后,直接贴到Excel里,就能变成表格了。

    如果你会Excel的话,很容易就搞定了


    python3

    import pandas as pd
    
    html = 'tab.html' # 你给的table源码
    
    #默认pd会用 lxml 解析html
    df = pd.read_html(html,header=0,encoding='utf8')[0]
    print(df)
    df2 = df.iloc[1:,0:-1]
    df2.columns = df.columns.delete(0)
    df2 = df2.append(df.iloc[0,1:])
    df2['产品']=df.iat[0,0].replace(' ','')
    df2.insert(0,'产品',df2.pop('产品'))
    df2 = df2.sort_index()
    print(df2)

    结果:

            产品                             厂家 元/公斤 涨/跌  产地   备注
    0  进口原生多晶硅                   WackerChemie  480   -  德国  NaN
    1  进口原生多晶硅          Hemlock Semiconductor  450   -  美国  NaN
    2  进口原生多晶硅           Tokuyama Corporation  460   -  日本  NaN
    3  进口原生多晶硅  MEMC Electronic Materials,Inc  450   -  美国  NaN
    4  进口原生多晶硅          MitsubishiPolysilicon  460   -  日本  NaN
    5  进口原生多晶硅                      REC Group  430   -  美国  NaN
    6  进口原生多晶硅                    DC Chemical  430   -  韩国  NaN
    
    2022-10-31 00:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有