разобрался с первым, нужно подключать urllib. код примерно такой:
- Код: Выделить всё • Развернуть
import urllib
h = urllib.urlopen('http://google.com/') # нужно указывать протокол
print h.read() # печать html документа
P.S> в последнем нужно найти значения строк, помеченных звездочкой
P.P.S> а ещё в urllib есть функции для замены символов, которые не могу быть употреблены в url-адресе. так что можно делать GET запросы абсолютно не напрягаясь:
- Код: Выделить всё • Развернуть
import urllib
find_string = '123 321 !@#'
query = urllib.quote_plus(find_string)
h = urllib.urlopen('http://google.com/search?q=' + query) # поиск в гугле
print h.read() # вывод результата запроса
Добавлено спустя 1 час 12 минут 10 секунд:нашел как распарсить, использую модуль HTMLParser:
- Код: Выделить всё • Развернуть
from HTMLParser import HTMLParser
class myparser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.count = 0
def handle_starttag(self, tag, attrs):
if tag == 'li' and 'duration' in attrs[0][0] and 'id' in attrs[1][0] and 'singer' in attrs[2][0] and 'link' in attrs[3][0]:
print 'singer: ', attrs[2][1], ', link: ', attrs[3][1], ', id: ', attrs[1][1]
self.count += 1
data = """ сюда загнать html"""
pars = myparser()
pars.feed(data)
print pars.count
т.е. нужно наследоваться от класса HTMLParser и обработать функции handle_starttag, handle_endtag
Добавлено спустя 2 часа 13 минут 37 секунд:парсинг валится на реальной странице =( скорее всего там хтмл не совсем валидный, ибо google.com все-таки парсит.
- Код: Выделить всё • Развернуть
Traceback (most recent call last):
File "/home/mibbim/parser.py", line 76, in <module>
pars.feed(text)
File "/usr/lib/python2.6/HTMLParser.py", line 108, in feed
self.goahead(0)
File "/usr/lib/python2.6/HTMLParser.py", line 148, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 249, in parse_starttag
attrvalue = self.unescape(attrvalue)
File "/usr/lib/python2.6/HTMLParser.py", line 387, in unescape
return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
File "/usr/lib/python2.6/re.py", line 151, in sub
return _compile(pattern, 0).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)