Аватар для WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2

Как спарсить номер телефона из Avito?

29.04.2013, 12:34. Показов 34481. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как спарсить номер телефона из авито? Вот, что я смог понять:
1. сначала открывается страница обьявления (Например http://m.avito.ru/item/160974735), получаются cookies
2. Когда нажимаешь на кнопку "Показать номер" отправляется get запрос (например: http://m.avito.ru/item/1609747... 3c659673bb) скорее всего с cookies. Возвращается страница, где уже вместо кнопки "Показать номер" написан сам номер
Ссылку для get запроса спарсить без проблем, но почему-то получить страницу с номером мне не удается.
Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
import requests
import re
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13'}
r = requests.get('http://m.avito.ru/item/160974735', headers=headers)
text = r.text
 
LinkWithTrash = re.search(r'showPhone\(event\)\"\shref=\".+\"', text).group() #Ссылка с лишними тегами
NotFullLink = LinkWithTrash[24:-61] #Часть ссылки
FullLink = 'http://m.avito.ru' + NotFullLink #Полная ссылка
print FullLink
p = requests.get(FullLink, cookies=r.cookies, headers=headers) #Новый запрос спрошлыми кукисами 
print p.text # Почему-то в номом исходном коде нет телефона
Буду благодарен за помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2013, 12:34
Ответы с готовыми решениями:

Номер телефона на avito
пишу парсер Авито. Подскажите пожалуйста как "достать" картинку с номером телефона в объявлении. Он скрыт за кнопкой "показать...

Структуры (cведения об абонентах АТС: ФИО владельца телефона, год установки телефона, номер телефона, тип установки телефона, льгота)
Сведения об абонентах АТС. Структура должна содержать следующую информацию: фамилию, имя, отчество владельца телефона, год установки ...

На междугородной АТС информация содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона
Помогите пожалуйста доделать задачу. При такой постановке вопроса помощи не дождешься.unit Unit3; interface uses Windows,...

19
6 / 6 / 1
Регистрация: 03.04.2010
Сообщений: 37
07.05.2013, 21:04
Есть вот такая классная штука.

Получение страницы:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from twisted.internet import reactor
from twisted.web.client import getPage
 
def callback(page):
    # do smth with page - it will be a string
    if reactor.running:
        reactor.stop()
 
def main():
    url = 'http://m.avito.ru/item/160974735'
    getPage(url).addCallback(callback)
    reactor.run()
 
if __name__ == '__main__':
    main()
Для получения урла телефона лучше использовать lxml, а точнее, XPath

Python
1
2
3
4
5
from lxml import html
 
def callback(page):
    doc = html.document_fromstring(page)
    href = doc.xpath("//a[@id='showPhoneBtn']/@href")[0]
После того, как ссылка найдена, нужно еще раз вызвать getPage для url+href, добавив колбек типа
Python
1
2
3
4
5
6
7
def get_phone(page):
    # с помощью xpath вытаскиваем телефон
    doc = html.document_fromstring(page)
    phone = doc.xpath("//li[@class='para m_item_phone']/a/text()")[0]
 
    if reactor.running:
        reactor.stop()
2
 Аватар для WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2
07.05.2013, 21:08  [ТС]
А у вас получилось так достать телефон?
0
6 / 6 / 1
Регистрация: 03.04.2010
Сообщений: 37
07.05.2013, 21:09
Цитата Сообщение от WhiteMan Посмотреть сообщение
А у вас получилось так достать телефон?
Да, конечно. Иначе я бы код не приводил.
0
 Аватар для WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2
07.05.2013, 21:30  [ТС]
Спасибо огромное, смог все сделать с ваших слов, только не понимаю что происходит. где бы почитать про парсинг с twisted? Что посоветуете? На сайте не смог ничего хорошего найти
0
6 / 6 / 1
Регистрация: 03.04.2010
Сообщений: 37
07.05.2013, 21:43
Цитата Сообщение от WhiteMan Посмотреть сообщение
Спасибо огромное, смог все сделать с ваших слов, только не понимаю что происходит. где бы почитать про парсинг с twisted? Что посоветуете? На сайте не смог ничего хорошего найти
Twisted здесь используется для получения страницы и только.
Парсинг осуществляется с помощью lxml.

На хабре довольно много статей как о twisted, так и о lxml (одну из них я выше дал), начните с них.
Либо, если с английским хорошо, то вот howto по twisted.
1
 Аватар для WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2
07.05.2013, 21:54  [ТС]
Спасибо
0
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
08.05.2013, 04:32
Цитата Сообщение от malinoff Посмотреть сообщение
Есть вот такая классная штука
Ну зачем из пушки по воробьям
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import requests
from urllib.parse import urljoin
 
from lxml.html import fromstring
 
def getPhone(url):
    headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13'}
 
    session = requests.session()
    resp = session.get(url, headers=headers)
 
    html = fromstring(resp.content)
    href = html.xpath("//a[@id='showPhoneBtn']/@href")[0]
 
    url = urljoin(resp.url, href)
    resp = session.get(url)
 
    html = fromstring(resp.content)
    phone = html.xpath("//li[@class='para m_item_phone']/a/text()")[0]
 
    return phone
1
6 / 6 / 1
Регистрация: 03.04.2010
Сообщений: 37
08.05.2013, 04:58
Цитата Сообщение от pyuser Посмотреть сообщение
Ну зачем из пушки по воробьям
Очень удобная пушка
Согласен, для этой задачи немного оверхед, но в дальнейшем знание twisted только на пользу будет.
0
 Аватар для WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2
08.05.2013, 08:09  [ТС]
Так совсем понятно Спасибо. Но у меня почему-то нет такой функции в urllib. Ну и ладно.
0
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
10.05.2013, 03:19
Цитата Сообщение от WhiteMan Посмотреть сообщение
Но у меня почему-то нет такой функции в urllib. Ну и ладно.
Очевидно у Вас вторая ветка питона. Поищите urljoin в справке.
0
26 / 26 / 6
Регистрация: 19.10.2012
Сообщений: 131
11.05.2013, 15:24
Цитата Сообщение от malinoff Посмотреть сообщение

Для получения урла телефона лучше использовать lxml, а точнее, XPath
lxml насколько быстрее обработает html, нежели regexp? Если по страницам (а их много), например, только ссылки искать, хорошая фора будет перед регуляркой?
0
6 / 6 / 1
Регистрация: 03.04.2010
Сообщений: 37
11.05.2013, 16:04
Цитата Сообщение от man0ngi Посмотреть сообщение
lxml насколько быстрее обработает html, нежели regexp? Если по страницам (а их много), например, только ссылки искать, хорошая фора будет перед регуляркой?
Как-то вот так.
0
0 / 0 / 0
Регистрация: 31.07.2013
Сообщений: 47
03.09.2013, 11:33
Ребят может вы мне поможете, проблема такая. Пишу парсер сайта погоды с помощью этой темы и столкнулся с следующей бедой :
Сам код :
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import lxml.html
from urllib import request
import requests
from urllib.parse import urljoin
from lxml.html import fromstring
url = "http://rp5.ru/%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D0%B5,_%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D1%80%D0%B0%D0%B9"
 
http_proxy = "http://Zud_AD:2231s@10.5.45.250:3128"
 
proxyDict = { 
             
              "http" : http_proxy
              
            }
 
r = requests.get(url,  proxies=proxyDict)
 
html = fromstring(r.content)
temp= html.xpath("//div[@class='t_0']/a/text()")[0]
А вот и ошибка, не могу понять, что не так делаю

Python
1
2
3
4
5
6
Traceback (most recent call last):
  File "C:/Python32/xd", line 18, in <module>
    html = fromstring(r.content)
  File "C:\Python32\lib\site-packages\lxml\html\__init__.py", line 630, in fromstring
    if start.startswith('<html') or start.startswith('<!doctype'):
TypeError: expected an object with the buffer interface
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 289
16.12.2018, 19:54
malinoff, При установке twisted выдаёт ошибку
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
16.12.2018, 20:19
Цитата Сообщение от MiracleOne Посмотреть сообщение
При установке twisted выдаёт ошибку
Во первых malinoff 4 года на форуме не появлялся, во вторых выкладывайте текст ошибки
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 289
16.12.2018, 21:54
ТабуретY,
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
17.12.2018, 06:35
MiracleOne, дело в том, что под python 3.7 еще нет скомпилированных пакетов и python пытается скачать исходники и скомпилировать их, а компилятора с++ нет, самый простой выход это установить python 3.6
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.12.2018, 13:31
На pypi вообще нет ничего кроме исходников, а вот lfd.uci.edu есть компилированные пакеты twisted под все актуальные версии Python.
Но так как люди все равно не читают справочные разделы разделы Python , то, как правило, так и остаются ни с чем.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
16.01.2019, 14:11
WhiteMan, https://youtu.be/ucTPsHW1914?l... cClzg85_TZ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2019, 14:11
Помогаю со студенческими работами здесь

Даны фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона по его фамилии и инициалам.
1)Даны фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона по его фамилии и инициалам. 2)Написать программу перевода...

Как можно зделать лимит при вводе номера телефона, к примеру: я ввожу номер 380505922454 и если этот номер больше чем 12
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include&lt;string.h&gt; #include &lt;string&gt; using namespace std; class Phone_number { ...

Заблокирован очередной номер мобильного в объявлениях на Avito и Юле
Суть проблемы. Есть постоянно обновляемое объявление об оказании компьютерных услуг на Авито и Юле. Содержание индентичное. 3 года без...

Записи и типизированые файлы. Структура: ФИО, год установки телефона, номер телефона
помогите пожалуйста решить задачу Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонента,...

Записи и типизированные файлы. Структура: ФИО абонента, год установки телефона, номер телефона
Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонента, его имя и отчество, год установки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru