我想从网站下载一个excel文件。但是,在我检查 HTML 代码后没有该文件的链接。
我在网页中单击“Excel 输出”按钮后下载的文件已损坏,因为它只是将 HTML 表格保存为 excel 文件。
这是该 excel 输出按钮的 HTML 代码
<th colspan="4">
<a onmouseover="this.style.cursor='pointer';" onmouseout="this.style.cursor='default';" onclick="alert('To open the Excel document, please Save/Save As first');window.open(window.location+'&excel=Y');">
<font color="blue">Excel Output</font></a></th>
这种情况下可以用Beautifulsoup下载文件吗?如果是,那么如何?
由于您没有提供原始站点 URL,因此这只是一个疯狂的猜测,但请查看“onclick”属性中的此 JS 片段:
window.open(window.location+'&excel=Y');
它附加&excel=Y
到当前 URL 并打开一个新窗口。所以我有根据的猜测是,您必须下载的 URL 与&excel=Y
添加到末尾的HTML 相同。
假设您从https://example.com/report/?year=2018
:获取此 HTML,只需直接转到即可https://example.com/report/?year=2018&excel=Y
。
这应该会让你得到你的电子表格,但前提是它真的是一个 MS Excel 文件 - 有一个输出 HTML 文件名以 XLS 结尾的老技巧,MS Excel 会很高兴地打开它,因为它是一个真正的 MS Excel 电子表格。
谢谢!我认为你的回答正好描述了我的情况。我确定这不是一个真正的 MS Excel 文件,它只是一个以 XLS 结尾的 HTML。我还可以将其下载为 excel 文件吗?– 方圆
不要介意测试它是否有效并自己弄清楚:我会为你做这件事。让我使用像 Notepad++ 这样的简单编辑器创建一个文件。我将添加以下 HTML 表格:
<table>
<tr>
<td></td>
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
现在我将它保存为foo.xls
,在 Windows 资源管理器中找到它并双击。瞧!这将打开 MS Excel,并显示以下警告:
当我点击“是”时,它会打开:
所以是的,下载文件并以.xls
. 如果它是一个真正的 Excel 文件,它将打开 OK,如果它是一个 HTML 表格,它将显示警告,但如果您单击“是”,它也会打开 OK。
好的,如果它是一个 HTML 表格并且您不想要警告怎么办?您可以使用 BeautifulSoup 解析它,并使用类似pandas
或的包xlwt
来创建一个真正的 Excel 文件。我不会在这个答案中介绍转换,这一步值得提出自己的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句