gpt4 book ai didi

python - 使用python mechanize下载zip文件

转载 作者:行者123 更新时间:2023-12-04 16:19:27 25 4
gpt4 key购买 nike

我正在使用 Python 2.7、mechanize 和 beautifulsoup,如果有帮助,我可以使用 urllib

好的,我正在尝试下载位于不同 html 表中的几个不同的 zip 文件。我知道特定文件在哪些表中(我知道它们是否在第一个、第二个、第三个......表中)
这是网页中 html 格式的第二个表格:

<table class="fe-form" cellpadding="0" cellspacing="0" border="0" width="50%">
<tr>
<td colspan="2"><h2>Eligibility List</h2></td>
</tr>


<tr>
<td><b>Eligibility File for Met-Ed</b> -
<a href="/content/fecorp/supplierservices/eligibility_list.suppliereligibility.html?id=ME&ftype=1&fname=cmb_me_elig_lst_06_2013.zip">cmb_me_elig_lst_06_2013.zip</td>
</tr>



<tr>
<td><b>Eligibility File for Penelec</b> -
<a href="/content/fecorp/supplierservices/eligibility_list.suppliereligibility.html?id=PN&ftype=1&fname=cmb_pn_elig_lst_06_2013.zip">cmb_pn_elig_lst_06_2013.zip</td>
</tr>



<tr>
<td><b>Eligibility File for Penn Power</b> -
<a href="/content/fecorp/supplierservices/eligibility_list.suppliereligibility.html?id=PP&ftype=1&fname=cmb_pennelig_06_2013.zip">cmb_pennelig_06_2013.zip</td>
</tr>



<tr>
<td><b>Eligibility File for West Penn Power</b> -
<a href="/content/fecorp/supplierservices/eligibility_list.suppliereligibility.html?id=WP&ftype=1&fname=cmb_wp_elig_lst_06_2013.zip">cmb_wp_elig_lst_06_2013.zip</td>
</tr>


<tr>
<td>&nbsp;</td>
</tr>
</table>

我打算使用以下代码来访问第二个表:
from bs4 import BeautifulSoup
html= br.response().read()
soup = BeautifulSoup(html)
table = soup.find("table", class=fe-form)

我猜 class="fe-form"是错误的,因为它不起作用,但是该表没有其他属性可以将它与其他表区分开来。所有表格都有 cellpadding="0"cellspacing="0"border="0"width="50%"。我想我不能使用 find() 函数。

所以我试图进入第二个表,然后下载此页面上的文件。有人可以给我一些信息来插入我朝着正确的方向前进。我以前处理过表格,但没有处理过表格。我希望有某种方法可以找到我正在寻找的 zip 文件的特定标题,然后下载它们,因为我将永远知道它们的名字

谢谢你的帮助,
汤姆

最佳答案

要选择您想要的表格,只需执行

table = soup.find('table', attrs={'class' : 'fe-form', 'cellpadding' : '0' })

这假设您的文档中只有一张 class=fe-form 和 cellpadding=0 的表格。如果有更多,此代码将仅选择第一个表。为确保您没有忽略页面上的任何内容,您可以这样做
tables = soup.findAll('table', attrs={'class' : 'fe-form', 'cellpadding' : '0' })
table = tables[0]

并且可以断言 len(tables)==1 以确保只有一张 table 。

现在,要下载文件,您可以做很多事情。假设您的代码已加载 mechanize ,你可以像
a_tags = table.findAll('a')

for a in a_tags:
if '.zip' in a.get('href'):
br.retrieve(a.get('href'), a.text)

这会将所有文件下载到您当前的工作目录,并根据它们的链接文本命名它们。

关于python - 使用python mechanize下载zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663312/

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