Как бы я разрешил большую партию URL перенаправления?

1387
memery

У меня в .csv файле будет 1000 с псевдонимами / сокращенными ссылками (например, bit.ly и т. Д.). Мне нужно выяснить, куда они перенаправляются. Есть ли простая программа, которая может выполнить эту задачу?

1
хм, при чем тут Excel? Hennes 11 лет назад 0
Я подумал, что может быть формула или макрос, о котором я не знаю. Кроме этого ничего. memery 11 лет назад 0
Я бы начал с рассмотрения `wget` и` curl`. Может быть, с опцией --spider. Это только половина решения, хотя. Hennes 11 лет назад 3

3 ответа на вопрос

2
MetaNova

If you can find a way to save the file as plaintext with one url per line, you could use the following script on a Linux/MacOS/*nix machine or Cygwin on Windows to spit out a text file with the urls.

#!/bin/bash rm resolved_urls.txt for url in $(cat url.txt); do wget -S "$url" 2>&1 | grep ^Location >> resolved_urls.txt done 

Copy the above text into a file called resolve.sh using nano if you need to, make it executable with chmod +x resolve.sh, name the file with bit.ly URL's and etc to url.txt, ensuring it is in the same folder as the resolve.sh file, and execute it with ./resolve.sh. It will create a file called "resolved_urls.txt" with the original URL and it's resolved counterpart.

The output with

http://bit.ly/1auRnQ9 http://bit.ly/19ZkTAI 

in url.txt is

http://bit.ly/1auRnQ9 --> Location: http://www.google.com/ [following] http://bit.ly/19ZkTAI --> Location: http://superuser.com/ [following] 

This script is far from perfect and may invoke the wrath of various Unix greybeards, but it at least works for bit.ly. Let me know if you have any *nix related questions.

не должно быть слишком сложно перерабатывать csv в простой текстовый файл, просто нужен какой-то непослушный бизнес с cut Journeyman Geek 11 лет назад 0
Не могли бы вы просто использовать `wget -S` и получить ответ сервера без вывода. Тогда нет необходимости в `delete_me`. И вы могли бы даже сделать `wget -S $ url 2> & 1 | grep ^ Location >> resolved_urls.txt` в одну строку. (Также нет необходимости в log.txt :) Rik 11 лет назад 1
Спасибо, Рик. Я думал, что, вероятно, будет флаг для этого, но не хотел тратить слишком много времени на эту проблему. :П MetaNova 11 лет назад 0
2
Rik

You didn't specify your OS.

But in Linux (with Curl and awk installed) you can do something like this:

#!/bin/bash while read LINE ; do NEWURL=$(curl -sIL $LINE 2>&1 | awk '/^Location/ ' | tail -n1;) echo "$LINE ; $NEWURL" done < urls.txt 

Note that sites who don't redirect will not have a result after the old one.

1
K7AAY

http://linkpeelr.appspot.com/ does it onscreen, but there's an API you can use at http://longurl.org/

Похожие вопросы