Читать содержимое заголовка из HTML - PullRequest
2 голосов
/ 19 декабря 2010

Мне нужен маленький скрипт в Python. Необходимо прочитать пользовательский блок в веб-файле.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2

req = urllib2.Request('http://target.com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page # Here is all page source with html tags, but
               # i need read only section from <head> to </head>

# example the http://target.com source is:
# <html>
# <body>
# <head>
# ... need to read this section ...
# </head>
# ... page source ...
# </body>
# </html>

Как читать пользовательский раздел?

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

Для разбора HTML мы используем парсер, например BeautifulSoup .

Конечно, вы можете проанализировать это с помощью регулярного выражения, но это то, что вы никогда не должны делать. То, что в некоторых случаях это работает, не означает, что это стандартный или правильный способ. Если вам интересно узнать почему, прочитайте этот превосходный ответ здесь на SO.

Начните с урока BeautifulSoup и посмотрите, как анализировать необходимую информацию. Это довольно легко сделать. Мы не собираемся делать это для вас, то есть для вас, чтобы читать и учиться!

Просто для того, чтобы предупредить вас, у вас есть the_page, который содержит данные HTML.

>> from BeautifulSoup import BeautifulSoup
>> soup = BeautifulSoup(the_page)

Теперь следуйте инструкции и узнайте, как получить все в теге head.

0 голосов
/ 19 декабря 2010
from BeautifulSoup import BeautifulSoup
import urllib2

page = urllib2.urlopen('http://www.example.com')
soup = BeautifulSoup(page.read())
print soup.find('head')

выходы

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example Web Page</title>
</head>
0 голосов
/ 19 декабря 2010

Одним из решений будет использование удивительной библиотеки Python Beautiful Soup . Это позволяет вам довольно легко разобрать html / xml и попытается помочь, если документы повреждены или недействительны.

...