Выскабливание номера телефона от Olx ad - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь создать скребок для сайта olx (www.olx.pl), используя запросы и Beautifulsoup. У меня нет проблем с большинством данных, но номер телефона скрыт (нужно сначала щелкнуть по нему). Я уже пытался использовать Chrome Inspect, чтобы увидеть, что происходит на вкладке «Сеть», когда я нажимаю на нее вручную. Существует запрос ajax с этой информацией:? Я пытался отправить запрос такого рода, используя библиотеку запросов, но в ответ получил «000 000 000». Я могу получить номер телефона с помощью Selenium, но он загружается слишком медленно.

Вопрос: есть ли способ обойти эти телефонные токены безопасности? или Как ускорить Selenium, чтобы отменить номер телефона, скажем, за 1-2 секунды?

Пример объявления: https://www.olx.pl/561666735

РЕДАКТИРОВАТЬ: На самом деле, теперь в ответ я получаю сообщение, что мой IP-адресзаблокирован. (Но только при использовании запросов, ip не блокируется, когда я загружаю страницу вручную). К сожалению, я внес некоторые изменения и не могу воспроизвести код, чтобы получить «000 000 000» в ответ. Это часть моего кода прямо сейчас.

def scrap_phone(id):
s = requests.Session()
url = "https://www.olx.pl/{}".format(id)
response = s.get(url, headers=headers)
page_text = response.text
# getting short id
index_of_short_id = page_text.index("'id':'")
short_id = page_text[index_of_short_id:index_of_short_id+11].split("'")[-1]
# getting phone token
index_of_token = page_text.index("phoneToken")
phone_token = page_text[index_of_token+10:index_of_token+150].split("'")[1]
url = "https://www.olx.pl/ajax/misc/contact/phone/{}".format(short_id)
data = {
    'pt': phone_token
}
response = s.post(url, data=data, headers=headers)
print(response.text)

scrap_phone(540006276)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...