这两天在整理资料的时候遇到了一个难题。本想把网页上的表格内容复制过来,但是复制的内容全乱了!如果你自己一点一点地跟着表格的内容走,那就太麻烦了!动动脑筋,看看有什么办法可以解决这个问题。
处理表格网页上有三种形式的表单:

最简单的是用表格标签直接在网页上显示固定数据。这种网页表格内容不是随着网页的刷新而刷新,而是内容固定的。用table tab显示数据稍微复杂一点,但是随着网页的刷新或者用户的不同,数据呈现的数据也不同。这样的表格数据获取需要分析并提交链接请求、参数等。,这个比较复杂。相比以上,更简单的是将excel表单保存为网页,然后供用户浏览。所以我们可以直接下载这个网页,用excel打开。本文介绍的方法可以解决表格的第一种和第二种形式!
1.html解析库lxml
我们先介绍一下使用的关键库。这里主要用的是lxml库。是一个python解析库,支持HTML和XML解析,XPath解析,解析效率很高。
简单来说,它做一件事。它按照一定的规则,从html文件中的这些标签中找到包含你指定内容的标签,然后获取标签中的内容。这个规则是怎么定义的?这里不得不说,XPath解析方法,通过它提供的语法,可以快速定位标签,然后获取里面的内容。
小伙伴可能会有疑惑,但是XPath语法不行怎么办?没关系,浏览器会帮你的。
XPath获取在我们想要获取内容的地方,点击鼠标右键选择Check,然后开发者工具就会打开,在html中定位我们想要获取的内容。然后在那个位置右击鼠标,选择Copy-> Copy Xpath,得到这个内容的Xpath,然后用lxml解析,得到你想要的内容。
2.“复制”表单并编码!

1.获取网页
为了解决第一种和第二种表单的问题,我们需要将表单的内容完整的展现在网页上,然后Ctrl+s保存网页。这样,保存的网页就包含了表单的所有信息。
下载下来的网页2.分析下载的html
我们首先使用浏览器自带的Copy xpath获取内容的Xpath,然后使用lxml库中的Xpath方法解析Xpath。
向xpath路径添加文本表示提取了标记中的内容。因为头信息的Xpath不同于数值信息的Xpath,所以分别提取头信息和数值信息,并且返回两个列表header_result和row_result。
但是,获取的内容包含空、换行符等不必要的符号。接下来,清理获取的内容以移除这些符号。
清洗内容根据这个表格的特点,我们分别提取了标题信息和数字信息,但是在写文件的时候是按照表格一行一行的写,这就需要我们把标题信息和数字信息关联起来。

关联后存储在row_result_clear_total列表中的信息是逐行的,每一行都包含标题和具体的数值信息。
关联后最后,该列表信息存储在一个. csv文件中。
存入csv这样,我们就“复制”了htm中包含的所有表格信息。用excel表格打开csv文件,我们可以看到所有的表格信息。如你所见,表格化的数据没有任何的无序,以至于几行代码就可以“复制”出几百行或者几千行甚至更多的web表格,省时省力!
结果感谢您的阅读。如果觉得增长了见识,可以喜欢一下,收藏起来以备不时之需吗?
感兴趣的朋友可以关注我,欢迎留言讨论。请注明出处。


