当前位置: 首页 > 知识库问答 >
问题:

用python mechanize下载zip文件

舒枫涟
2023-03-14

我正在使用Python2.7、mechanize和beautifulsoup,如果有帮助,我可以使用urllib

<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文件的特定标题,然后下载它们,因为我总是知道它们的名字

汤姆,谢谢你的帮助

共有1个答案

封昊天
2023-03-14

要选择所需的表,只需执行以下操作

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以确保只有一个表。

现在,要下载该文件,您可以做很多事情。假设您已经从您的代码加载了mechanize,那么您可以

a_tags = table.findAll('a')

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

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

 类似资料:
  • 我想通过截击下载一个zip文件。现在,我可以使用下载和解压缩Android中的Zip文件来下载文件。 我想改用截击库。我该怎么做?

  • 我有我的网站在和我想下载一些文件从另一个域但没有得到下载和显示302移动临时错误。我使用cURL代码。

  • 本文向大家介绍怎么下载一个zip文件?相关面试题,主要包含被问及怎么下载一个zip文件?时的应答技巧和注意事项,需要的朋友参考一下 a标签加属性 文件流的方式 注意:Bolb的方式构建完 blob 对象后才会转换成文件,所以尽量使用a标签的形式进行下载

  • 问题内容: 如何使用php将多个文件下载为zip文件? 问题答案: 您可以使用该类创建一个ZIP文件并将其流式传输到客户端。就像是: 并流式传输: 第二行强制浏览器向用户显示一个下载框,并提示名称filename.zip。第三行是可选的,但某些(主要是较旧的)浏览器在某些情况下会出现问题,而未指定内容大小。

  • 问题内容: 两部分的问题。我正在尝试从互联网档案中下载多个已存档的Cory Doctorow播客。我的iTunes提要中未包含的旧版本。我已经编写了脚本,但是下载的文件格式不正确。 问题1-如何更改以下载zip mp3文件?问题2-将变量传递到URL的更好方法是什么? 该脚本是从这里改编的 问题答案: 这是我处理URL构建和下载的方式。我确保将文件命名为url的基本名称(后跟斜杠后的最后一位),并

  • 我有下面的代码从mkyong得到,到本地的zip文件。但,我的要求是在服务器上压缩文件,并需要下载。谁能帮忙吗。 写入zipFiles的代码: 我可以在fileoutputstream这里提供什么?内容文件和导航文件是我从代码中创建的文件。