Как извлечь определенные части веб-страницы в Python - PullRequest
7 голосов
/ 14 августа 2011

Целевая веб-страница: http://www.immi.gov.au/skilled/general-skilled-migration/estimated-allocation-times.htm

Раздел, который я хочу извлечь:

  <tr>
  <td>Skilled &ndash; Independent (Residence) subclass 885<br />online</td>
  <td>N/A</td>
  <td>N/A</td>
  <td>N/A</td>
  <td>15 May 2011</td>
  <td>N/A</td>
  </tr>

Как только код найдет этот раздел, выполнив поиск по ключевому слову " подкласс 885
online
", он должен затем напечатать дату, которая находится в 5-м теге, а именно " 15 мая 2011 г.", как показано выше.

Это всего лишь мой монитор, который следит за ходом моего заявления на иммиграцию.

Ответы [ 3 ]

6 голосов
/ 14 августа 2011

Возможно, вы захотите использовать это как отправную точку:

Python 2.6.7 (r267:88850, Jun 13 2011, 22:03:32) 
[GCC 4.6.1 20110608 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2, re
>>> from BeautifulSoup import BeautifulSoup
>>> urllib2.urlopen('http://www.immi.gov.au/skilled/general-skilled-migration/estimated-allocation-times.htm')
<addinfourl at 139158380 whose fp = <socket._fileobject object at 0x84aa2ac>>
>>> html = _.read()
>>> soup = BeautifulSoup(html)
>>> soup.find(text = re.compile('\\bsubclass 885\\b')).parent.parent.find('td', text = re.compile(' [0-9]{4}$'))
u'15 May 2011'
6 голосов
/ 14 августа 2011

" Beau - ootiful Soo - упс!

Beau - ootiful Soo - упс!

Soo- петля электронного вечера -

Красивая, красавица - FUL SOUP!"

- Льюис Кэрролл, Приключения Алисы в Стране Чудес

Я думаю, это именно то, что он имел в виду!

Mock Turtle, вероятно, сделает что-то вроде этого:

>>> from BeautifulSoup import BeautifulSoup
>>> import urllib2
>>> url = 'http://www.immi.gov.au/skilled/general-skilled-migration/estimated-allocation-times.htm'
>>> page = urllib2.urlopen(url)
>>> soup = BeautifulSoup(page)
>>> for row in soup.html.body.findAll('tr'):
...     data = row.findAll('td')
...     if data and 'subclass 885online' in data[0].text:
...         print data[4].text
... 
15 May 2011

Но я не уверен, что это поможет, так как эта дата уже прошла!

Удачи с приложением!

2 голосов
/ 14 августа 2011

Существует библиотека, которая называется Beautiful Soup и выполняет ту работу, которую вы просили. http://www.crummy.com/software/BeautifulSoup/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...