انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => نرم‌افزارهای اینترنتی => نویسنده: sajjad93 در 27 بهمن 1393، 01:07 ب‌ظ

عنوان: دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 27 بهمن 1393، 01:07 ب‌ظ
چجوری میشه بدون این که همه ی صفحات یک سایت رو دستی باز کرد فایل های  pdf و mp3 داخل اون سایت رو دانلود کرد مثلا من می خوام در مورد این آدرس این کار رو انجام بدم:

http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/

اینجا چند ده تا لینک هست که داخل هرکدومشون فایل pdf و mp3 وجود داره(بعضا فیلم هم وجود داره) می خوام همشون رو بدون این که وارد لینک ها بشم دانلود کنم چجوری میشه این کار رو کرد؟
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: Ma3X در 27 بهمن 1393، 01:26 ب‌ظ
باید یک اسکریپت‌بنویسی که خودکار این‌کار رو انجام بده.
مثلا بر اساس یک پترن لینک درست کنی و با یک پترن دیگه محتوا رو از خروجی بکشی بیرون.
من برای این‌کار از simple_html_dom استفاده می‌کنم که یک کلاس PHP هست و می‌تونی دانلودش کنی.

یکی از آخرین کارهایی که انجام دادم رو برات پیوست می‌کنم.
اسکریپت one.php لیست همه قاری‌ها رو به همراه نام، تصویر و لینک قاری توی سایت جمع می‌کنه و توی یک تیبل ذخیره می‌کنه.
اسکریپت two.php وارد آدرس لینک هر قاری می‌شه و قطعات قرائت رو توی هر چند تا صفحه که باشه به‌همراه عنوان، لینک و مدت زمان، جمع آوری می‌کنه و توی یک تیبل دیگه ذخیره می‌کنه.
نکته: اسکریپت two.php رو باید از طریق کامند لاین اجرا کنی.
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 27 بهمن 1393، 04:00 ب‌ظ
ممنون، من بیشتر علاقه دارم که بدونم آیا یک برنامه آماده ای برای همچین کاری وجود داره یا نه؟(خودم برنامه نویسی بلد نیستم یکمی ادیت و لگو بازی با کدهابلدم  ;D)
من با این اسکریپتی که نوشتم می تونم فقط pdf و mp3 درس های سایت جدیدش رو دانلود کنم ولی چیزی که پست اول گفتم نیست:
#!/bin/bash
read -p "Which unit do you want to download? (just number) > "
unit=$REPLY
proxychains wget -O $unit-source http://www.bbc.co.uk/learningenglish/english/course/lower-intermediate/unit-$unit/downloads
grep -Po '(?<=href=")[^"]*' $unit-source | grep -E '(.mp3|.pdf)' > dl-$unit.txt

cat dl-$unit.txt
read -p "Do you want to download files now? [yes|no] > "
if [ $REPLY == "yes" ]; then
mkdir unit-$unit
proxychains aria2c -c -x16 -s16 -k 1M -j2 -i dl-$unit.txt -d unit-$unit
else
exit
fi
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: دانیال بهزادی در 27 بهمن 1393، 04:38 ب‌ظ
از wget استفاده کن
$ man wget
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: محسن صفری در 27 بهمن 1393، 10:08 ب‌ظ
wget سوییچ A- را دارد که فقط فایلهایی با پسوند داده شده را دانلود می کند و همچنین سوییچ m- که کل لینکها را دانلود می کند . ترکیب این دو تا شاید بتونه مشکل شما را حل کنه .

ولی من فکر می کنم در سایتهای بزرگ توی انبوه لینکها wget نتونه کاری از پیش ببره .

من اسکریپت زیر را نوشتم . شبیه اسکریپت خودتونه . ولی آدرس صفحاتی که اطمینان دارید لینک هایPDF و یا MP3 داخلوشون هست را داخل یک فایل و در هر خط یک لینک قرار می دهید . اینجوری  اطمینان دارید اسکریپت الکی دور خودش نمی چرخه و بعد به صورت زیر برنامه را فراخوانی می کنید :

$ dowloader file

کد برنامه downloader به صورت زیره :

#!/bin/bash

if [ $# -ne 1 ]; then
echo "Usage: $0 filename" 1>&2;
exit 1;
fi

if [ ! -e "$1" ]; then
echo file "$1" not exists! 1>&2;
exit 1;
fi

t="tmp.$$"
>$t || { echo "could not create temp file" 1>&2; exit 1; }

while read line
do
echo "Opening: $line"
curl "$line" 2>/dev/null | egrep -o "http://[^ ]*(\.mp3|\.pdf)" >>$t
done <"$1"

echo "======================================================================="
echo "We grabbed these files: "
nl -ba $t
echo "======================================================================="

echo "Now download each of them"
wget -i $t

rm -f $t
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: دانیال بهزادی در 27 بهمن 1393، 10:52 ب‌ظ
ولی من فکر می کنم در سایتهای بزرگ توی انبوه لینکها wget نتونه کاری از پیش ببره .

چرا نتونه؟ کارش همینه! کافیه بهش بگید تا عمق چند لینک از صفحه جلو بره
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: محسن صفری در 27 بهمن 1393، 10:55 ب‌ظ
ولی من فکر می کنم در سایتهای بزرگ توی انبوه لینکها wget نتونه کاری از پیش ببره .

چرا نتونه؟ کارش همینه! کافیه بهش بگید تا عمق چند لینک از صفحه جلو بره

خودتون تصدیق کردید که توی اینجور موارد باید بهش عمق بدیم و محدودش کنیم !
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: دانیال بهزادی در 28 بهمن 1393، 01:24 ق‌ظ
خودتون تصدیق کردید که توی اینجور موارد باید بهش عمق بدیم و محدودش کنیم !

خب معلومه، اگه محدود نشه کلّ اینترنت رو بارگیری می‌کنه. این «کاری از پیش نبردن» نیست، اتّفاقاً عملکرد بی‌نقصه
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: محسن صفری در 28 بهمن 1393، 10:08 ق‌ظ
این بخشی از سوالی هست که دوستمون پرسیدن .
چجوری میشه بدون این که همه ی صفحات یک سایت رو دستی باز کرد فایل های  pdf و mp3 داخل اون سایت رو دانلود کرد.

من با wget و با همان سوییچ های A- و m- تست کردم و احساس کردم که لینکهایی که تست می کنه اکثرا غیر مفید هستند و صرف وقت کاملا بی مورد  . از طرفی همون طور که توی سوال آمده دوستمون می خواد همه صفحات رو باز کنه و فایل های PDF اون رو دانلود کنه پس در نتیجه چیزی که اینجا معنی نداره DEPTH هست .

در هنگام اجرا من برای سایت بزرگی مثل BBC فرمول wget و یا هر چیز دیگه ای رو بعید می دونم نتیجه قابل قبولی بده .

لطفا اگر می خواهید بگید بعید نمی دونید دستور wget ای که کل فایل ها را استخراج می کند رو اینجا بنویسید تا عملکرد آن را در هنگام اجرا ببینیم . فقط از depth استفاده نکنید چون در اینجا بی معنیه .

راه حل من که کدش رو هم نوشتم ترکیبی از دخالت انسانی و برنامه نویسی پوسته است .
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: جادی در 28 بهمن 1393، 11:04 ق‌ظ
تایید می کنم که wget کارش همینه. لازم هم نیست عمق بدین بلکه می گین لینک ها رو دنبال کنه ولی فقط در کدوم دامین ها بچرخه. مثلا می گین هر چقدر لازم بود برو جلو ولی از یو آر ال jadi.net خارج نشو یا حتی اگر روی سی دی ان است که بهش می گین که روی این پنج تا یو آر ال بمونه.
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 28 بهمن 1393، 10:48 ب‌ظ
ممنون از پاسخ های دوستان
مثلا برای این آدرس:
http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/
می خوام فقط لینک هایی که تو همین صفحه هست رو باز کنه و فایل های pdf و mp3 داخلش رو دانلود کنه چجوری باید wget رو تنظیم کنم؟
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 28 بهمن 1393، 11:00 ب‌ظ
wget سوییچ A- را دارد که فقط فایلهایی با پسوند داده شده را دانلود می کند و همچنین سوییچ m- که کل لینکها را دانلود می کند . ترکیب این دو تا شاید بتونه مشکل شما را حل کنه .

ولی من فکر می کنم در سایتهای بزرگ توی انبوه لینکها wget نتونه کاری از پیش ببره .

من اسکریپت زیر را نوشتم . شبیه اسکریپت خودتونه . ولی آدرس صفحاتی که اطمینان دارید لینک هایPDF و یا MP3 داخلوشون هست را داخل یک فایل و در هر خط یک لینک قرار می دهید . اینجوری  اطمینان دارید اسکریپت الکی دور خودش نمی چرخه و بعد به صورت زیر برنامه را فراخوانی می کنید :

$ dowloader file

کد برنامه downloader به صورت زیره :

#!/bin/bash

if [ $# -ne 1 ]; then
echo "Usage: $0 filename" 1>&2;
exit 1;
fi

if [ ! -e "$1" ]; then
echo file "$1" not exists! 1>&2;
exit 1;
fi

t="tmp.$$"
>$t || { echo "could not create temp file" 1>&2; exit 1; }

while read line
do
echo "Opening: $line"
curl "$line" 2>/dev/null | egrep -o "http://[^ ]*(\.mp3|\.pdf)" >>$t
done <"$1"

echo "======================================================================="
echo "We grabbed these files: "
nl -ba $t
echo "======================================================================="

echo "Now download each of them"
wget -i $t

rm -f $t
ممنون از پاسختون.
من یک لینک بهش دادم ولی دانلود نشد:
sajjad@sajjad-K45VD:~/Desktop/bbc$ proxychains ./downloader dl.txt
ProxyChains-3.1 (http://proxychains.sf.net)
Opening: http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/2014/04/140408_vwitn_stone.shtml
=======================================================================
We grabbed these files:
=======================================================================
Now download each of them
No URLs found in tmp.4773.
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: محسن صفری در 28 بهمن 1393، 11:20 ب‌ظ
برای من دو تا لینک پیدا کرد :

$ ./c2 f
Opening: http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/2014/04/140408_vwitn_stone.shtml
=======================================================================
We grabbed these files:
     1 http://http-ws.bbc.co.uk.edgesuite.net/mp3/learningenglish/2014/04/140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3
     2 http://wsdownload.bbc.co.uk/learningenglish/pdf/2014/04/140409130151_bbc_vwitn_stone_from_sky.pdf
=======================================================================
Now download each of them
--2015-02-17 23:15:10--  http://http-ws.bbc.co.uk.edgesuite.net/mp3/learningenglish/2014/04/140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3
Connecting to 127.0.0.1:8080... connected.
Proxy request sent, awaiting response... 200 OK
Length: 1939383 (1.8M) [audio/mpeg]
Saving to: ‘140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3’

14% [=====================>                                                                                                                                ] 287,357     --.-K/s  eta 16m 17s ^

به نظر می رسه توی سیستم شما curl نتونسته محتویات صفحه داده شده رو بخونه . تنظیمات به قول دوستان فندق شکنتون رو چک کنید . من این کد رو زدم توی bash :

$ export http_proxy="127.0.0.1:8080"

تا تنظیمات فندق شکن توی shell اعمال بشه .
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 29 بهمن 1393، 12:35 ق‌ظ
برای من دو تا لینک پیدا کرد :

$ ./c2 f
Opening: http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/2014/04/140408_vwitn_stone.shtml
=======================================================================
We grabbed these files:
     1 http://http-ws.bbc.co.uk.edgesuite.net/mp3/learningenglish/2014/04/140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3
     2 http://wsdownload.bbc.co.uk/learningenglish/pdf/2014/04/140409130151_bbc_vwitn_stone_from_sky.pdf
=======================================================================
Now download each of them
--2015-02-17 23:15:10--  http://http-ws.bbc.co.uk.edgesuite.net/mp3/learningenglish/2014/04/140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3
Connecting to 127.0.0.1:8080... connected.
Proxy request sent, awaiting response... 200 OK
Length: 1939383 (1.8M) [audio/mpeg]
Saving to: ‘140409_vwitn_stone_from_sky_140409_vwitn_stone_audio_au_bb.mp3’

14% [=====================>                                                                                                                                ] 287,357     --.-K/s  eta 16m 17s ^

به نظر می رسه توی سیستم شما curl نتونسته محتویات صفحه داده شده رو بخونه . تنظیمات به قول دوستان فندق شکنتون رو چک کنید . من این کد رو زدم توی bash :

$ export http_proxy="127.0.0.1:8080"

تا تنظیمات فندق شکن توی shell اعمال بشه .
ممنون کار کرد، اما این همه لینک رو یکی یکی کپی کردن هم سخته اگه مثلا با دستور grep همه لینک ها به صورت جدا بشن و توی یک فایل ذخیره بشن سرعت کار بیشتر میشه.(خودم یه جستجویی می کنم تو گوگل شاید چیزی پیدا کردم!!)
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: جادی در 29 بهمن 1393، 03:59 ب‌ظ
ممنون از پاسخ های دوستان
مثلا برای این آدرس:
http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/
می خوام فقط لینک هایی که تو همین صفحه هست رو باز کنه و فایل های pdf و mp3 داخلش رو دانلود کنه چجوری باید wget رو تنظیم کنم؟

سجاد جان، من جات بودم حس بدی پیدا می کردم که چرا هیچ کس درست جواب نمی ده. دلیلش اینه که می گیم سوال باید هوشمندانه باشه. یک تلاش بکن. بگو چه دستوری تست کردی و چه مشکلی داشت و بعد آدم ها می گن اشکالش چیه ولی الان سوال برای من که هر روز با wget کار نمی کنم اینه «من لازم دارم در این صفحه لینک ها باز بشن و فایل های ام پی تری و پی دی اف دانلود بشن. لطفا یکی بره راهنما رو نگاه کنه برام دستوری که لازم دارم رو بنویسه».

همیشه اگر می خوای این خطی که پیشنهاد می شه رو بری جلو باید راهنمای دستور (man wget) رو ببینی و بعد سعی کنی و ببینی به چه مشکلاتی بر می خوری و دقیق مطرح کنی که کجا گیر کردی که بشه جواب داد.

ببخشید که روده درازی می کنم ولی باعث پیشرفت دنیای لینوکس می شه (:
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 01 اسفند 1393، 07:11 ب‌ظ
ممنون از پاسخ های دوستان
مثلا برای این آدرس:
http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/
می خوام فقط لینک هایی که تو همین صفحه هست رو باز کنه و فایل های pdf و mp3 داخلش رو دانلود کنه چجوری باید wget رو تنظیم کنم؟

سجاد جان، من جات بودم حس بدی پیدا می کردم که چرا هیچ کس درست جواب نمی ده. دلیلش اینه که می گیم سوال باید هوشمندانه باشه. یک تلاش بکن. بگو چه دستوری تست کردی و چه مشکلی داشت و بعد آدم ها می گن اشکالش چیه ولی الان سوال برای من که هر روز با wget کار نمی کنم اینه «من لازم دارم در این صفحه لینک ها باز بشن و فایل های ام پی تری و پی دی اف دانلود بشن. لطفا یکی بره راهنما رو نگاه کنه برام دستوری که لازم دارم رو بنویسه».

همیشه اگر می خوای این خطی که پیشنهاد می شه رو بری جلو باید راهنمای دستور (man wget) رو ببینی و بعد سعی کنی و ببینی به چه مشکلاتی بر می خوری و دقیق مطرح کنی که کجا گیر کردی که بشه جواب داد.

ببخشید که روده درازی می کنم ولی باعث پیشرفت دنیای لینوکس می شه (:
سوالم کلی بود قصدم محول کردن مشق شبم برای دیگران نبود  ;D حالا با wget یا یه برنامه ی دیگه فرقی نمیکنه باید یه سر نخ هایی پیدا کنم بعد برم دنبالش.
الان با یه اسکریپتی که نوشتم کارم را افتاد:
اول همه ی لینک های آدرس مورد نظر رو با این دوتا دستور جدا  می کنم داخل یه فایل می فرستم:
#!/bin/bash
proxychains wget -O main-source http://www.bbc.co.uk/worldservice/learningenglish/language/wordsinthenews/
grep -Po '(?<=href=")[^"]*' main-source > all-links.txt

بعد هر کدوم از لینک ها رو این اسکریپت باز میکنه فایل های pdf و mp3 رو جدا می کنه و داخل یه فایل ذخیره می کنه و میشه با هر برنامه ای این فایل ها رو دانلود کرد:
#!/bin/bash

FILE=all-links.txt
COUNTER=0
minimumsize=100
while read line; do
COUNTER=$[$COUNTER +1]
if [ -f p-$COUNTER ]; then
actualsize=$(stat -c %s p-$COUNTER )
echo "p-$COUNTER : {"
echo "line : $line"
if [ "$actualsize" -ge "$minimumsize" ]; then
echo "this is downloaded }"
else
proxychains wget -O p-$COUNTER $line -a log.txt
grep -Po '(?<=href=")[^"]*' p-$COUNTER | grep -E '(.mp3|.pdf)' >> main-dl.txt
fi

else
proxychains wget -O p-$COUNTER $line -a log.txt
grep -Po '(?<=href=")[^"]*' p-$COUNTER | grep -E '(.mp3|.pdf)' >> main-dl.txt

fi
done < $FILE
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: bagheri.mj در 17 اسفند 1393، 04:59 ب‌ظ
سلام لینک دانلود لطفا
عنوان: پاسخ : دانلود فایل های داخل یک سایت
ارسال شده توسط: sajjad93 در 17 اسفند 1393، 08:52 ب‌ظ
سلام لینک دانلود لطفا
لینک دانلود چی؟