Загрузите несколько URL сразу

В bash:

history | tr -s ' ' | cut -d' ' -f3-

В zsh и ksh:

history -n

В tcsh:

history -h

Править

Также см. ответ порыва об использовании fc.

7
11.02.2014, 04:08
3 ответа

Если у Вас уже есть список URL, просто добавьте данные POST к тому списку. Что-то как:

www.example.com    postdata1
www.foo.com
www.bar.com       second_post_data

Затем вместо использования -i, считайте файл в цикле удара и передайте данные wget:

while read url post; do wget --post-data="$post" $url; done < list.txt

Для выполнения их параллельно так, чтобы несколько файлов были загружены одновременно использовать & вместо ;. Осторожный, хотя, это запустит отдельное wget процесс для каждого URL.

while read url post; do wget --post-data="$post" $url & done < list.txt

Один прием, который я использую для запуска этого типа вещи, отслеживает то, сколько в настоящее время выполняет и только выполняет следующий, если число ниже порога, 10, например:

while read url post; do 
 while [[ "$(pgrep -fc wget)" -gt 9 && $c -gt 10 ]]; do sleep 1; done; 
 ((c++));  
 echo "Launching $url ($c)"; 
 wget --post-data="$post" $url >/dev/null 2>&1 && echo "$c finsihed" & 
done < list.txt

Это будет запускать первые 10 URL, затем ожидать одного, чтобы закончить и запустить следующее.

3
27.01.2020, 20:18

Можно определить разграниченный файл CSV как с этим форматом (например):

URL1;POSTDATA1
URL2;POSTDATA2
...

и проанализируйте его с помощью awk команда:

awk -F\; '{print "wget -i "$1" --post-data="$2}' your_CSV_file
2
27.01.2020, 20:18

Я не использовал этот инструмент прежде, но думал, что добавил бы его, так как это звучит точно как то, что Вы ищете.

uget

Это - названный инструмент GUI uget. Это имеет способность взять входной файл, который содержал бы URL для загрузки наряду с HTTP данных POST из второго файла. Неясно, позволяет ли это Вам использовать различные данные POST на URL или если это - только единственный набор для всех URL, но могло бы стоить более внимательного рассмотрения.

$ uget-gtk --help
...
  -i, --input-file=FILE         add URLs found in FILE.
  --http-post-data=STRING       use the POST method; send STRING as the data.
  --http-post-file=FILE         use the POST method; send contents of FILE
снимки экрана

ss #1

ss #2

2
27.01.2020, 20:18

Теги

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