Что неправильно в коде?

import urllib

import grab

g.go('vk.com/kostya__wolf?z=photo107790602_343297825%2Fa...')

g.xpath('/html/body/div[4]/div/div[1]/table/tbody/tr[1]/td[2]/table/tbody/tr[1]/td[2]/table/tbody/tr[2]/td[2]/div/div[2]/div[2]/a/img')

print g.xpath_text('/html/body/div[4]/div/div[1]/table/tbody/tr[1]/td[2]/table/tbody/tr[1]/td[2]/table/tbody/tr[2]/td[2]/div/div[2]/div[2]/a/img')

u = urllib.urlopen(src)

data = u.read()

u.close()

file('bibit.jpg', 'wb').write(data)
  • Вопрос задан
  • 2367 просмотров
Пригласить эксперта
Ответы на вопрос 1
@throughtheether
human after all
Что этот код, по-вашему, должен делать? А что он по факту делает (т.е. что не нравится)?
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')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы