如何从<span>锁定标签中抓取数据?

时间:2016-07-01 19:52:38

标签: python html web-scraping beautifulsoup

我正在使用bs4urllib2从网站上获取一些信息。

这里是webpage

我必须取出电话的其余部分3610... ...但首先我必须按此按钮才能显示电话的其余部分。

img example

此信息位于此div

<div class="telefones">
        Telefone(s): <span id="telefones">3610...
        <span><input type="button" id="verTel" value="ver telefone completo"/></span></span>
</div>

是否可以将bs4urllib2一起使用来实现这一目标?

2 个答案:

答案 0 :(得分:3)

电话号码从对http://www.ribeiraosaude.com.br/home/GetTelefone/<id>网址的响应加载,使用requests发出此请求并从JSON响应中提取电话号码:

import requests
from bs4 import BeautifulSoup

page_id = 937
with requests.Session() as session:  # maintaining web-scraping session
    response = session.get("http://www.ribeiraosaude.com.br/detalhe/%d" % page_id)
    soup = BeautifulSoup(response.content, "html.parser")

    phone_number = session.get("http://www.ribeiraosaude.com.br/home/GetTelefone/%d" % page_id).json()["telefone"]
    print(phone_number)

答案 1 :(得分:3)

如何处理此问题取决于单击按钮时发生的情况。

如果按钮触发显示数字的JavaScript,则可以抓取按钮调用的JavaScript。

EG。 function displayNumber(){ document.body.yourSpan.innerHTML = 'NUMBER'

但是,如果按钮导致ajax请求,您可以使用fantastic request library built into python模仿页面的操作,直接与服务器进行交互。

EG。 phone_number = session.get("http://www.ribeiraosaude.com.br/home/GetTelefone/%d" % page_id).json()["telefone"](来源:alecxe)

然而,无论按钮如何工作,还有一个选择。如果使用Selenium来处理页面也非常流行,它与可以由python控制的浏览器非常相似。有关使用Selenium单击按钮的信息,请参阅this answer