Форум сайта python.su
0
Добрый день. Подскажите, пожалуйста, как со страницы avito.ru/items/krasnodar_kvartiry_prodam_2-k_kvartiru_44_kv._m_65715447 получить телефон питоном? Хотя бы картинкой.
Офлайн
173
А сами то попытались что-нибудь сделать?
Там все на Javascript. Берете отладчик из Chrome или Firebug для Firefox и смотрите, что происходит при нажатии на “показать номер”, откуда что берется, какие запросы отправляются, какая ссылка на картинку.
Т.к. стало интересно и это может пригодится в будущем, набросал код:
#!/usr/bin/env python # -*- coding: utf-8 -*- from urlparse import urljoin import re import requests import lxml.html BASE_URL = 'http://www.avito.ru/items/' def get_avito_phone(item, output_filename): s = requests.Session() item_url = urljoin(BASE_URL, item) doc = lxml.html.fromstring(s.get(item_url).content) verification = doc.xpath('//meta[@name="ph_verification"]/@content')[0] # js: eipd_ext(tln), then use only each third letter js: pue(elt) phone_key = re.sub(r'[^0-9a-f]', '', verification)[::3] phone_url = '%sphone/%s?pkey=%s' % (BASE_URL, item, phone_key) r = s.get(phone_url, headers={'Referer': item_url}) with open(output_filename, 'wb') as f: f.write(r.content) get_avito_phone('krasnodar_kvartiry_prodam_2-k_kvartiru_44_kv._m_65715447', 'image.jpg')
Офлайн
0
reclosedev
Я то пытался, да не особо получалось. Спасибо большое за код, буду разбираться.
Офлайн