2013-07-15 2 views
1

Я использую Python 2.7, механизировать и BeautifulSoup и если это поможет я мог бы использовать URLLIBзагрузки архивных файлов с питоном механизировать

нормально, я пытаюсь загрузить несколько различных архивные файлы, которые находятся в разных таблицах 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> 

I собираюсь использовать следующий код, чтобы добраться до 2-я таблицы:

from bs4 import BeautifulSoup 
html= br.response().read() 
soup = BeautifulSoup(html) 
table = soup.find("table", class=fe-form) 

Я думаю, что класс = «Fe-форма» является неправильной, потому что он не будет работать, но нет никаких других атрибутов таблицы, отличает его от других таблиц. Все таблицы имеют cellpadding = "0" cellspacing = "0" border = "0" width = "50%". Думаю, я не могу использовать функцию find().

, поэтому я пытаюсь перейти ко второй таблице, а затем загрузить файлы на этой странице. Может ли кто-нибудь дать мне какую-то информацию, чтобы подтолкнуть меня в правильном направлении. Я работал с формами раньше, но не с таблицами. Хотелось бы, чтобы был какой-то способ, чтобы найти найти конкретное название почтового индекса файлов, которые я ищу затем загрузить их, так как я всегда буду знать их имена

Спасибо за любую помощь, Том

+0

Как насчет этого вопроса. Я пытаюсь загрузить zip-файл с помощью механики python. Zip-файл не находится в форме, указанной в таблице. Может ли кто-нибудь дать мои советы, чтобы узнать, как это сделать? Я искал в Google информацию об использовании механики python для навигации по таблицам и ничего не могу найти. Я на правильном пути? – user1087809

ответ

0

Чтобы выбрать таблицу вы хотите, просто сделать

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

Это предполагает, что есть только одна таблица с классом = Fe-формы и CELLPADDING = 0 в документе. Если их больше, этот код будет выбирать только первую таблицу. Для того, чтобы убедиться, что вы не с видом ничего на странице, вы могли бы сделать

tables = soup.findAll('table', attrs={'class' : 'fe-form', 'cellpadding' : '0' }) 
table = tables[0] 

А может быть, утверждают, что Len (таблицы) == 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) 

Что бы скачать все файлы в текущем каталоге и назвал бы их в соответствии с текстом ссылки.

+0

@ user1087809: был ли этот ответ полезным? или это не сработало? – djas

+0

Я просто не был на этой странице некоторое время, спасибо за помощь djas – user1087809

Смежные вопросы