chuxuezhe90 2021-08-20 16:14 采纳率: 100%
浏览 45
已结题

网页表中的关键字都相似,python如何进行数据清洗,且不错位

......<td align="center"><div align="center">高良涧</div></td> <td align="center"><div align="center">50916400</div></td> <td align="center"><div align="center">2021-08-20 15:55:00</div></td> <td colspan="2" align="center"><div align="center">12.95</div></td> <td align="center"><div align="center"></div></td> <td align="center"><div align="center">六垛南闸</div></td> <td align="center"><div align="center">51002250</div></td> <td align="center"><div align="center">2021-08-20 15:55:00</div></td> <td align="center"><div align="center">2.70</div></td> <td align="center"><div align="center">2.20</div></td> <td align="center"><div align="center"></div></td> <td align="center"><div align="center">运西电站</div></td> <td align="center"><div align="center">51002102</div></td> <div align="center">2021-08-20 15:55:00</div></td> <td colspan="2"><div align="center">7.12</div></td> </tr> <td height="13"><div align="center"></div></td> <td align="center"><div align="center">高良涧闸(闸上游)</div></td>....
爬取网页表格数据,如加粗部分,数据需要对应起来,最好如此 高良涧-50916400-20210820 15:55:00-12.95,数据清洗后能对应起来,第一次提问,可能描述不清。

  • 写回答

3条回答 默认 最新

  • CSDN专家-HGJ 2021-08-20 17:23
    关注

    使用bs4对网页内容解析,用panda写成数据框,存入excel中,数据相对工整。
    当数据比较多时,最好用pd.read_html()获取表格数据。

    import bs4
    import pandas 
    t='''
    <td align="center"><div align="center">高良涧</div></td> <td align="center"><div align="center">50916400</div></td> <td align="center"><div align="center">2021-08-20 15:55:00</div></td> <td colspan="2" align="center"><div align="center">12.95</div></td> <td align="center"><div align="center"></div></td> <td align="center"><div align="center">六垛南闸</div></td> <td align="center"><div align="center">51002250</div></td> <td align="center"><div align="center">2021-08-20 15:55:00</div></td> <td align="center"><div align="center">2.70</div></td> <td align="center"><div align="center">2.20</div></td> <td align="center"><div align="center"></div></td> <td align="center"><div align="center">运西电站</div></td> <td align="center"><div align="center">51002102</div></td> <div align="center">2021-08-20 15:55:00</div></td> <td colspan="2"><div align="center">7.12</div></td> </tr> <td height="13"><div align="center"></div></td> <td align="center"><div align="center">高良涧闸(闸上游)</div></td>'''
    tx=bs4.BeautifulSoup(t,'lxml')
    a=[td.text for td in tx.select('td div') if td.text!='']
    b=[a[:4],a[4:9],a[9:12],a[12:]]#因数据不规整,通过切片获取每行数据,这是对特定数据进行的处理,通用做法是遍历子节点比如tr进行获取行数据。
    df=pd.DataFrame(b)  
    print(df) 
    df.to_excel('t820.xlsx',index=False,header=None) 
    
    0         1                    2      3     4
    0        高良涧  50916400  2021-08-20 15:55:00  12.95  None
    1       六垛南闸  51002250  2021-08-20 15:55:00   2.70  2.20
    2       运西电站  51002102                 7.12   None  None
    3  高良涧闸(闸上游)      None                 None   None  None
    

    如有帮助,请点采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 8月20日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效