JavaScript - przechwycenie urls

0

Dzień dobry,

Czy istnieje jakiś prosty sposób, aby przechwycić url-e z tej strony? Chcę ściągnąć pliki .zip, jest ich 65 000. https://www.inegi.org.mx/temas/relieve/continental/default.html#Descargas

W ogóle się nie znam na javascript. Jestem w tym zielony. Help!

Rafal

0

Chcesz mieć listę samych urli do zipów?

0

Tak. Potem już mi łatwo ściągnąć te dane.

2

Zakładam, że nie masz archaicznej przeglądarki, wklej to do konsoli JS na tamtej stronie i wciśnij enter (w chrome konsola jest pod CTRL+Shift+j):

{
  const save = (data) => {
    const filename = `links.txt`

    const blob = new Blob([data], { type: "text/plain" })
    let e = document.createEvent("MouseEvents")
    let a = document.createElement("a")

    a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl = ["text/json", a.download, a.href].join(":")
    e.initMouseEvent(
      "click",
      true,
      false,
      window,
      0,
      0,
      0,
      0,
      0,
      false,
      false,
      false,
      false,
      0,
      null,
    )
    a.dispatchEvent(e)
  }

  const go = (page, amount) =>
    fetch(
      `https://www.inegi.org.mx/app/api/productos/interna_v1/slcComponente/obtenCartasBuscador?entidad=&municipio=&localidad=&tema=0150002000000000&escala=&formato=&edicion=&clave=&buscador=&tipoB=2&orden=4&ordenDesc=true&pagina=${page}&tamano=${amount}&_=1564079057160`,
      {
        credentials: "include",
        headers: {
          accept: "application/json, text/javascript, */*; q=0.01",
          "accept-language": "pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7",
          "x-requested-with": "XMLHttpRequest",
        },
        referrer:
          "https://www.inegi.org.mx/temas/relieve/continental/default.html",
        referrerPolicy: "no-referrer-when-downgrade",
        body: null,
        method: "GET",
        mode: "cors",
      },
    )
      .then((r) => r.json())
      .then((result) => {
        return result.mapas.map((item) => {
          const urls = []
          const links = $(item.formatos).find("a").get()
          links.forEach(link => urls.push(link.href))
          return urls
        })
      })

  const main = async () => {
    const allLinks = []

    for (let i = 0; i < 66; i++) {
      const links = await go(i, 1000)
      console.log(`Fetched ${1000 * (i + 1)} items`)
      links.forEach((link) => allLinks.push(link))
    }

    save(allLinks.join("\n"))
  }

  main()
}
0

Nie bój się, nie mam żadnych wrażliwych danych. Co najwyżej może mi wyłożyć komputer. Albo uwalić Windows w ostateczności.

Mogę zaryzykować :)

1

Masz tu wynik, bo ten co zwraca ma niepotrzebne przecinki:

0

A czy jest sposób na zapisanie linków z tej strony? w kodzie źródłowym jest wiele linków, które kończą się rozszerzeniem '.mp4' z atrybutem itemprop="url".
klik

0

Witajcie,

Wracam po dwóch latach. Chciałbym ściągnąć najnowsze dane z 2018 i 2019, ale ten sposób już nie działa. Mógłby ktoś pomóc ?

https://www.inegi.org.mx/temas/relieve/continental/default.html#Descargas

1 użytkowników online, w tym zalogowanych: 0, gości: 1