从Olx广告中截取电话号码

2024-04-19 09:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为olx网站创建一个scraper(网址:www.olx.pl)使用请求和美化组。我对大多数数据没有任何问题,但是电话号码是隐藏的(必须先单击它)。我已经尝试过使用chrome inspect来查看当我手动单击“网络”选项卡时,该选项卡中发生了什么。 有一个包含此信息的ajax请求“?pt=5d1480fbad0a1f2006e865bfdf7a6fb07f244b82e17ab0ea4c5eaddc43f9da391b098e1926642564ffb781655d55be270c6913f7526a08298f43b24c0169636b“ 这是可以在网站源中找到的phoneToken(它在每次页面加载时都会更改)。 我试图使用请求库发送这种请求,但得到了“000”的响应。 我可以使用Selenium获取电话号码,但加载速度太慢。你知道吗

问题是: 有办法绕过那些安全电话令牌吗? 或 如何加速Selenium在1-2秒内丢弃电话号码?你知道吗

广告示例: https://www.olx.pl/561666735

编辑: 事实上,现在作为回应,我得到的消息,我的IP地址被封锁。(但仅使用请求,当我手动加载页面时,ip不会被阻止)。 不幸的是,我做了一些修改,我无法复制代码,以得到'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)

Tags: oftexttokenidurlindexresponsewww