Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2012 08:05:40

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить телефон со страницы объявления при помощи Python?

Добрый день. Подскажите, пожалуйста, как со страницы avito.ru/items/krasnodar_kvartiry_prodam_2-k_kvartiru_44_kv._m_65715447 получить телефон питоном? Хотя бы картинкой.



Офлайн

#2 Май 20, 2012 10:12:46

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Как получить телефон со страницы объявления при помощи Python?

А сами то попытались что-нибудь сделать?
Там все на 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')

Офлайн

#3 Май 20, 2012 10:23:34

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить телефон со страницы объявления при помощи Python?

reclosedev
Я то пытался, да не особо получалось. Спасибо большое за код, буду разбираться.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version