是点击地图标记后的可能的报废(爬行)工具提示?

时间:2016-08-26 07:09:42

标签: python-3.x selenium web-scraping web-crawler

[问题]

我不能请求鼠标左键单击事件来通过selenium激活工具提示。

[我的意图]

使用 selenium (python代码)从此Web服务中的地图标记上的工具提示窗口中删除(抓取)文本

daum service web map: http://www.socar.kr/reserve#jeju

<map id="daum.maps.Marker.Area:13u" name="daum.maps.Marker.Area:13u"><area href="javascript:void(0)" alt="" shape="rect" coords="0,0,40,38" title="" style="-webkit-tap-highlight-color: transparent;"></map>


<div class="tooltip myInfoWindow"><h4><a class="map_zone_name" href="#"><em class="map_zone_id" style="display:none;">2390</em><span title="제주대 후문주차장">제주대 후문주차장</span><span class="bg"></span></a></h4><p><a title="제주도 제주시 아라1동 368-60">제주도 제주시 아라1동 368-6...</a><br>운영차량 : 총 <em>4</em>대</p><p class="btn"><em class="map_zone_id" style="display:none;">2390</em><a class="btn_overlay_search" href="#"><img src="/template/asset/images/reservation/btn_able_socar.png" alt="예약가능 쏘카 보기"></a></p><a href="#" class="close"><img src="/template/asset/images/reservation/btn_layer_close.png" alt="닫기"></a></div>

P.S:是否可以在谷歌地图标记

上抓取工具提示窗口的文本

https

1 个答案:

答案 0 :(得分:1)

当您点击工具提示时,xhr请求会使用 zone_id 发送到 https://api.socar.kr/reserve/zone_info ,您可能需要过滤通过使用页面内容输出您想要的区域,我现在没有时间花在这上面了,但这会重新创建请求:

import requests
from time import time, sleep

# These params will be for https://api.socar.kr/reserve/oneway_zone_list 
# which we can get the zone_ids from.
params = {"type": "start", "_": str(time())}
# We use the zone_id from each dict we parse from the json receievd
params2 = {"zone_id": ""}

with requests.Session() as s:
    s.get("http://www.socar.kr/reserve#jeju")
    s.headers.update({
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64)"})
    r = s.get("https://api.socar.kr/reserve/oneway_zone_list", params=params)
    result = r.json()["result"]
    for d in result:
        params2["zone_id"] = d["zone_id"]
        params2["_"] = str(time())
        sleep(1)
        r2 = s.get("https://api.socar.kr/reserve/zone_info", params=params2)
        print(r2.json())

结果中的每个d都是一个像:

这样的词典
{u'zone_lat': u'37.248859', u'zone_id': u'2902', u'zone_region1_short': u'\uacbd\uae30', u'zone_open_time': u'00:00:00', u'zone_region1': u'\uacbd\uae30\ub3c4', u'zone_close_time': u'23:59:59', u'zone_name': u'SK\ud558\uc774\ub2c9\uc2a4 \uc774\ucc9c', u'open_weekend': u'close', u'zone_region3': u'\ubd80\ubc1c\uc74d', u'zone_region2': u'\uc774\ucc9c\uc2dc', u'zone_lng': u'127.490639', u'zone_addr': u'\uacbd\uae30\ub3c4 \uc774\ucc9c\uc2dc \ubd80\ubc1c\uc74d \uc544\ubbf8\ub9ac 707'}

可能有其他信息可以让你按特定的地方过滤,我不会说韩语,所以我不能完全按照数据的相关性。

第二个请求给了我们一个像:

这样的词典
{u'retCode': u'1', u'retMsg': u'', u'result': {u'oper_way': u'\uc655\ubcf5', u'notice': u'<br>\u203b \ubc18\ub4dc\uc2dc \ubc29\ubb38\uc790 \uc8fc\ucc28\uc7a5 \uc9c0\uc815\uc8fc\ucc28\uad6c\uc5ed\uc5d0 \ubc18\ub0a9\ud574\uc8fc\uc138\uc694.<br>', u'notice_oneway': u'', u'zone_addr': u'\uacbd\uae30\ub3c4 \uc774\ucc9c\uc2dc \ubd80\ubc1c\uc74d \uc544\ubbf8\ub9ac 707', u'total_num': 2, u'able_num': 2, u'visit': u'\uc131\uc6b02\ub2e8\uc9c0 \uc544\ud30c\ud2b8 \uae30\uc900 \uc804\ubc29 \ud604\ub300\uc5d8\ub9ac\ubca0\uc774\ud130 \ubc29\uba74\uc73c\ub85c \ud6a1\ub2e8\ubcf4\ub3c4 \uc774\uc6a9 \ud6c4 \ud558\uc774\ub2c9\uc2a4 \uc774\ucc9c \ubc29\ubb38\uc790 \uc8fc\ucc28\uc7a5 \ub0b4 \uc3d8\uce74\uc804\uc6a9\uc8fc\ucc28\uad6c\uc5ed', u'zone_alias': u'\ud558\uc774\ub2c9\uc2a4 \ubc29\ubb38\uc790 \uc8fc\ucc28\uc7a5', u'zone_attr': u'[\uc774\ubca4\ud2b8]', u'state': True, u'link': u'http://blog.socar.kr/4074', u'oper_time': u'00:00~23:59', u'lat': u'37.248859', u'zone_name': u'SK\ud558\uc774\ub2c9\uc2a4 \uc774\ucc9c', u'lng': u'127.490639', u'zone_props': 0, u'visit_link': u'http://dmaps.kr/24ij6', u'zone_id': u'2902'}}

再次不确定那里的所有内容,但你可以在 u'notice 和许多其他信息下看到html标签。