使用python-mechaniz下载zip文件

2024-10-03 13:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

好的,我正在尝试下载两个不同的zip文件,它们位于不同的html表中。我知道特定文件在什么表中(我知道它们是否在第一、第二、第三。。。表)
以下是网页中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>

我打算用下面的代码去第二张桌子:

^{pr2}$

我想^{cl1}$

所以我试着去第二个表,然后下载这个页面上的文件。有人能给我一些信息让我朝正确的方向发展吗。我以前用过表格,但不是表格。我希望有一些方法可以找到我正在寻找的zip文件的特定标题,然后下载它们,因为我会一直知道它们的名称

谢谢你的帮助, 汤姆


Tags: 文件forhtmlcontentziptrfiletd
1条回答
网友
1楼 · 发布于 2024-10-03 13:31:03

要选择所需的表,只需

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

这假设文档中只有一个class=feform和cellpadding=0的表。如果有更多,此代码将只选择第一个表。为了确保您没有忽略页面上的任何内容,您可以这样做

^{pr2}$

并且可以断言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)

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

相关问题 更多 >