【问题标题】:Web scraping - extracting information from map icons网页抓取 - 从地图图标中提取信息
【发布时间】:2018-08-12 15:13:21
【问题描述】:

我是网络抓取的新手。我想抓取以下网站。

http://maps.3dhubs.com/

这是一张全球地图,列出了超过 7000 家供应商。我想得到所有供应商的名字。当您放大特定区域时,您将看到红色图标。单击红色图标会弹出一个弹出窗口,上面有供应商的名称。

我正在使用以下代码:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
url = 'http://maps.3dhubs.com/'
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
suppliers = soup.find_all("div", class_="leaflet-popup-pane")
print (suppliers)
driver.quit() 

代码给出一个空列表作为输出。我需要的信息在 div 标签和 leaflet-popup-pane 类中,但此信息仅在单击图标后显示。

如果这可以使用 selenium 完成,请告诉我如何操作。特别是,当您单击图标时会生成数据(供应商名称)。我知道如何使用 selenium 单击文本链接,但这里它是一个图标而不是文本。

image

【问题讨论】:

  • 我在这个推杆上做了几次尝试,但实际上却没有成功。困难似乎在于图标相互遮挡,因此 webdriver 无法单击它们。我能够从其中的几百个中获得结果,但最终每次都会导致崩溃。也许有更好的工具可以用于此

标签: javascript python selenium web-scraping


【解决方案1】:

我认为这个 json 文件(http://s3-eu-west-1.amazonaws.com/3dhubs/s3fs-public/hubsformap.json) 是你想要的。我在网站的源代码中找到它。

var xhr = new XMLHttpRequest();
    L.mapbox.accessToken = 'pk.eyJ1IjoiM2RodWJzbWFwcyIsImEiOiJBSzBFalRzIn0.j8icvSftfyZ4yxJmEgbrRw';
xhr.open('GET', encodeURI('//s3-eu-west-1.amazonaws.com/3dhubs/s3fs-public/hubsformap.json'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2021-07-03
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多