Web scraping 有没有办法刮取特定按钮的底层数据? 我正在尝试抓取一个网页,对于使用class属性的少数元素,我获得了数据,但问题是当我的循环要到每个URL提取信息时,它应该提取联系人号码

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)作为文本

联系人号码不直接可用,当我们单击“立即呼叫”按钮时,会打开一张弹出卡,显示联系人号码

我尝试使用phone number元素的class函数,但是仍然没有得到电话号码

try:
    contact = soup.find('div', class_= 'c-vn-full__number u-bold').text.strip()
except:
    contact = "N/A"
有没有办法达到这个结果

  • 另外,我还剩下一个元素来提取“咨询费”(Price)作为文本,但它没有class属性
  • 试试这个:

    导入请求
    从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点中要求的问题的结果,以获取联系号码?不要在评论中发布代码。编辑您的问题并在那里添加代码。