Что этот код, по-вашему, должен делать? А что он по факту делает (т.е. что не нравится)?
UPD:
Ошибки кода:
g.go('...')
имя переменной g не объявлено, добавьте перед этой строкой g=grab.Grab()
u = urllib.urlopen(src)
имя переменной src не объявлено.
Другие ошибки: xpath, скорее всего, неверный. То, что вы скопировали его из firebug/firepath, не гарантирует, что grab сможет его обработать. Скорее всего, браузер и grab видят немного разную страницу, это связано с обработкой javascript. Кроме того, мне (grab 0.4.13, pyton 2.7, windows 7) grab ругался, что метод xpath() более не поддерживается (deprecated).
UPD2:
рабочий код с использованием grab:
import urllib
import grab
import json
g=grab.Grab()
url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00'
search_string=url[url.find('photo'):url.find('%2F')]
xpath='//a[contains(@href, "%s")]' % search_string
g.go(url)
src=g.doc.select(xpath).attr('onclick')
d = json.loads(src[src.find('{'):src.find('}}')+len('}}')])
src=d['temp']['base']+d['temp']['z_'][0]+'.jpg'
urllib.urlretrieve(src,'bibit.jpg')