如何抓取由按钮锁定的数据?

我试图从网站上获取一些信息,但没有成功。

问题是仅在单击某个按钮后才显示数据。

第一页

我想要的信息位于此标记中:

<div id="frmContact" class="contactForm hidden"></div>
<div class="btn btn-secondary viewnumber phone-trigger" data-ga-action="header">
    <a href="#" rel="nofollow">Ver telefone</a>
    <i class="icon"></i>
</div>

这可能与以下行有关:

<form action="/noindex/doctor-phone" id="frmPhone" method="post"><input name="__RequestVerificationToken" type="hidden" value="3uFb11EKzbTh4TWoqXk025U7jS7QoV5-od7lSgSBzdu616u82jQAHiOTl2aB3q47aRCIg2CjVCjE6R6bUAqDplAOfeM1" /><input id="entityKey" name="entityKey" type="hidden" value="12898671" /><input id="placeType" name="placeType" type="hidden" value="" /><input id="placeKey" name="placeKey" type="hidden" value="" /></form>    <div id="phonePlacer"></div>

但是我不知道如何__RequestVerificationToken正确使用它


我是否必须使用此信息向服务器发送请求以获取电话信息?如果是这样,怎么办?

单击按钮后,将显示以下弹出窗口(我对info1到info4感兴趣):

在此处输入图片说明

我的代码:

page = BeautifulSoup(urllib2.urlopen('http://www.doctoralia.com.br/medico/RANDOM_PROFILE'), "html.parser")
hidden_tags = page.find_all("input", type="hidden")

for tag in hidden_tags:
    print tag

输出:

<input name="__RequestVerificationToken" type="hidden" value="gPYstKvmi4xBQsV81ECf5mYe695igvq8E2QqtOgBPqtRybEP74OEbSAe8uDg8dlZCpqib94FIrUoPMnpLTC0tY7kiJE1"/>
<input id="entityKey" name="entityKey" type="hidden" value="14336768"/>
<input id="placeType" name="placeType" type="hidden" value=""/>
<input id="placeKey" name="placeKey" type="hidden" value=""/>
帕德拉克·坎宁安(Padraic Cunningham)

使用request.Session对象非常简单,您只需__RequestVerificationToken要从初始页面和几张表单数据中提取令牌即可。我使用了完整列表页面来获取电话号码和指向医生页面的链接,无论您决定从何处获取电话号码,都适用相同的逻辑:

from bs4 import BeautifulSoup
import requests
from urlparse import urljoin

head = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"}

base = "http://www.doctoralia.com.br/"

with requests.Session() as s:
    r = s.get('http://www.doctoralia.com.br/medicos/especialidade/dermatologistas-1314')
    page = BeautifulSoup(r.content, "html.parser")
    token = page.select_one("input[name=__RequestVerificationToken]"["value"])
    hidden_tags = page.select("article.media.doctor")
    for tag in hidden_tags:
        h3 = tag.select_one("h3")
        key = h3.a["data-track-click"]
        place = tag.select_one("span[data-location]")["data-location"].split("|", 1)[0]

       data = {"__RequestVerificationToken": token,
            "entityKey": key,
            "placeKey": place}
        resp = s.post("http://www.doctoralia.com.br/noindex/doctor-phone", data=data, headers=head)
        soup = BeautifulSoup(resp.content,"html.parser")
        print(urljoin(base,h3.a["href"]))
        print(soup.select_one("li.phone").text.strip())

这样就可以获取每个医生的所有链接和电话号码,单击该按钮时在弹出窗口中看到的所有内容都可以解析。必不可少的表单数据是__RequestVerificationTokenentityKeyplaceKey似乎并不会影响帖子,但包括在内不会造成任何伤害。在这种情况下,标头也不是必不可少的,但是添加用户代理始终是一个好主意。您可能希望在请求之间添加睡眠,以便在发出大量请求时不要锤打服务器。还要查看robots.txt:

User-agent: *
Disallow: /noindex/
Disallow: /usuarios/
Disallow: /users/
Disallow: /utilisateurs/
Disallow: /utenti/
Disallow: /gebruikers/
Disallow: /nutzer/
Disallow: /medical-center/m/
Disallow: /consultant/m/
Disallow: /centro-medico/m/
Disallow: /medico/m/
Disallow: /centre-medical/m/
Disallow: /medicin/m/
Disallow: /centro-medico/m/
Disallow: /medico/m/
Disallow: /centri-medici/m/
Disallow: /medecin/m/
Disallow: /healthpro/m/
Disallow: /facharzt/m/
Disallow: /sanit�tszentrum/m/
Disallow: /clickfav/
Disallow: /clicktlf/
Disallow: /reservas/
Disallow: /citas/
Disallow: /medisch-centrum/m/
Disallow: /deskundige/m/
Disallow: /arzt/m/
Disallow: /klinik/m/
Disallow: /citas/
Disallow: /turnos/
Disallow: /appuntamenti/
Disallow: /appointments/
Disallow: /consultas/
Disallow: /ws/Schedules.asmx/
Disallow: /RESOURCE NOT FOUND/
Disallow: /RESOURCE+NOT+FOUND/
Disallow: /RESOURCE%20NOT%20FOUND/
Disallow: /entities/

没有用户代理限制,并且禁止您抓取任何内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用特殊字符抓取数据?

来自分类Dev

如何删除由pygbutton创建的按钮

来自分类Dev

如何使用jqlite抓取元素的attr数据?

来自分类Dev

使用VBA单击html按钮,然后抓取刷新的数据

来自分类Dev

如何使用Google API抓取数据

来自分类Dev

如何锁定Rust数据结构的内部?

来自分类Dev

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

来自分类Dev

点击按钮,然后在看似静态的网页上抓取数据?

来自分类Dev

如何杀死由条件变量锁定的线程?

来自分类Dev

如何从Yahoo Finance抓取特定数据?

来自分类Dev

如何使用漂亮的汤从Shopee抓取数据

来自分类Dev

如何使用PHP抓取HTML表数据

来自分类Dev

如何抓取HTML表格格式的数据?

来自分类Dev

点击事件后如何抓取可用数据

来自分类Dev

如何从网络上的网址中抓取数据?

来自分类Dev

如何从网站抓取的数据创建数据框?

来自分类Dev

选择后如何“锁定” html单选按钮?

来自分类Dev

如何通过Mechanize和Nokogiri抓取数据?

来自分类Dev

如何防止“睡眠”按钮锁定屏幕

来自分类Dev

如何防止某人抓取我的网站数据?

来自分类Dev

如何从网站上抓取数据?

来自分类Dev

按下按钮时如何锁定动作?

来自分类Dev

如何锁定由属于2个不同类的2个线程修改的数据结构

来自分类Dev

网页抓取时如何获取数值数据?

来自分类Dev

如何从返回CSV文件的API抓取数据

来自分类Dev

如何使用HtmlAgility包使用jquery按钮单击来在页面中抓取数据

来自分类Dev

如何抓取无限滚动生成的数据?

来自分类Dev

如何通过“搜索”按钮设置大写锁定?

来自分类Dev

从 ratemyprofessor 使用加载更多按钮抓取数据

Related 相关文章

热门标签

归档