Web scraping 有没有办法刮取特定按钮的底层数据? 我正在尝试抓取一个网页,对于使用class属性的少数元素,我获得了数据,但问题是当我的循环要到每个URL提取信息时,它应该提取联系人号码
联系人号码不直接可用,当我们单击“立即呼叫”按钮时,会打开一张弹出卡,显示联系人号码 我尝试使用phone number元素的class函数,但是仍然没有得到电话号码Web scraping 有没有办法刮取特定按钮的底层数据? 我正在尝试抓取一个网页,对于使用class属性的少数元素,我获得了数据,但问题是当我的循环要到每个URL提取信息时,它应该提取联系人号码,web-scraping,beautifulsoup,Web Scraping,Beautifulsoup,联系人号码不直接可用,当我们单击“立即呼叫”按钮时,会打开一张弹出卡,显示联系人号码 我尝试使用phone number元素的class函数,但是仍然没有得到电话号码 try: contact = soup.find('div', class_= 'c-vn-full__number u-bold').text.strip() except: contact = "N/A" 有没有办法达到这个结果 另外,我还剩下一个元素来提取“咨询费”(Price)作为文本
try:
contact = soup.find('div', class_= 'c-vn-full__number u-bold').text.strip()
except:
contact = "N/A"
有没有办法达到这个结果
导入请求
从bs4导入BeautifulSoup
url=”https://www.practo.com/Bangalore/doctor/dr-venkata-krishna-rao-diabetologist-1?practice_id=776084&specialization=general%20physician"
soup=BeautifulSoup(requests.get(url.text,“html.parser”)。选择(“.u-no-margin--top”)[-1]
打印(soup.getText())
输出:
₹400
{
"number": "+918046801985",
"operator": "VOICE",
"vn_zone_id": 1,
"country_code": "IN",
"extension": true,
"id": 49090
}
编辑:
要获取联系详细信息,您需要从源HTML
获取practice\u id
、doctor\u id
和query\u string
。这里嵌入了一个巨大的JSON
,但我认为只需挖出必要的部分,而不是解析这个怪物,就不会那么麻烦了
拥有所有零件后,可以使用端点获取联系人详细信息
以下是如何做到这一点:
导入json
进口稀土
导入请求
url=”https://www.practo.com/Bangalore/doctor/" \
“venkata-krishna-rao-diabetologist-1博士?”\
“执业医师id=776084&专科医师=普通医师%20”
page=请求.get(url).text
query\u string\u pattern=re.compile(r“query\u string\”:\“(.*?”)
实习医生重新编译(
r“(执业医生)\”:
r“\”([a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12})”
)
实习医生id,医生id=[i[1]代表我在re.findall(实习医生id,第页)[:2]]
查询字符串=重新搜索(查询字符串模式,第页)。组(1)
实践_url=”https://www.practo.com/health/api/vn/vnpractice"
query=f“{query\u string}&practice\u uuid={practice\u id}&doctor\u uuid={doctor\u id}”
endpoint_url=f“{practice_url}{query}”
标题={
“用户代理”:“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36”
“(KHTML,像壁虎一样)Chrome/90.0.4430.212 Safari/537.36”
}
contact_info=requests.get(endpoint_url,headers=headers).json()
打印(json.dumps(联系人信息[“vn\U电话号码”],缩进=2))
输出:
₹400
{
"number": "+918046801985",
"operator": "VOICE",
"vn_zone_id": 1,
"country_code": "IN",
"extension": true,
"id": 49090
}
介意分享URL吗?@baduker,你能给我提供你的电子邮件id吗?我可以分享我的代码并向它发送URL链接。怎么做?我的URL链接保存在名为doctorslinks=[]的列表中的循环中,现在我如何合并上面的代码,从循环中获取URL并找出咨询费。@badukerLoop查看您从这些URL制作的汤?如果您发现答案有用,请不要忘记向上投票/接受。我正在尽力将上面的代码放入循环中进行测试,并且我想知道是否有任何方法可以实现此目的e我在上面第1点中要求的问题的结果,以获取联系号码?不要在评论中发布代码。编辑您的问题并在那里添加代码。