ทำให้ `wget 'ไม่บันทึกหน้า


68

ฉันกำลังใช้wgetโปรแกรม แต่ฉันไม่ต้องการให้บันทึกไฟล์ html ที่ฉันกำลังดาวน์โหลด ฉันต้องการให้ยกเลิกหลังจากได้รับแล้ว ฉันจะทำอย่างไร


ฉันใหม่กับ Linux - /dev/nullสิ่งนี้จะใช้ได้หรือไม่
Ram Rachum

2
ดังนั้นจุดที่จะดาวน์โหลดมันคืออะไร?
ไม่ระบุชื่อ

1
@ ไม่ระบุชื่อฉันคิดว่าจะเน้นเซิร์ฟเวอร์ระยะไกล .. หากคุณไม่สนใจเนื้อหา .. ฉันอาจจะใช้ apachebench (ab) แม้ว่า
Tom O'Connor

คำตอบ:


83

คุณสามารถเปลี่ยนเส้นทางผลลัพธ์ของ wget เป็น / dev / null (หรือ NUL บน Windows):

wget http://www.example.com -O /dev/null

ไฟล์จะไม่ถูกเขียนลงดิสก์ แต่จะถูกดาวน์โหลด


สิ่งนี้ไม่ได้บันทึกหน้า แต่จะส่งอีเมลถึงฉัน นอกจากนี้ยังเป็นไปได้ไหมที่จะปิดการใช้งานอีเมล
trante

32

หากคุณไม่ต้องการที่จะบันทึกไฟล์และคุณได้รับการยอมรับวิธีการแก้ปัญหาของการดาวน์โหลดหน้าใน/dev/null, ฉันคิดว่าคุณกำลังใช้ wget ไม่ได้ที่จะได้รับและแยกเนื้อหาหน้า

หากความต้องการที่แท้จริงของคุณคือการเรียกการกระทำระยะไกลให้ตรวจสอบว่ามีหน้านั้นอยู่และอื่น ๆ ฉันคิดว่ามันจะเป็นการดีกว่าถ้าจะหลีกเลี่ยงการดาวน์โหลดหน้าเนื้อหาของ html เลย

เล่นกับwgetตัวเลือกต่างๆเพื่อดึงข้อมูลเฉพาะสิ่งที่คุณต้องการเช่นส่วนหัว http สถานะคำขอ ฯลฯ

  • สมมติว่าคุณต้องตรวจสอบหน้าว่าตกลง (เช่นสถานะที่ส่งคืนคือ 200) คุณสามารถทำสิ่งต่อไปนี้:

    wget --no-cache --spider http://your.server.tld/your/page.html
    
  • หากคุณต้องการแยกวิเคราะห์เซิร์ฟเวอร์ที่ส่งคืนส่วนหัวให้ทำดังนี้

    wget --no-cache -S http://your.server.tld/your/page.html
    

ดูหน้าwget manสำหรับตัวเลือกเพิ่มเติมเพื่อเล่นกับ
ดูlynxด้วยเช่นกันเพื่อเป็นทางเลือกในการ wget


ฉันสับสน --no-cacheในหน้าคนบอกว่ามันเป็นสาเหตุให้ wget "ส่งเซิร์ฟเวอร์ระยะไกลคำสั่งที่เหมาะสม ('Pragma: ไม่มีแคช') เพื่อรับไฟล์จากบริการระยะไกล"
Gaia

มันบอกกับเซิร์ฟเวอร์ว่าลูกค้าของคุณไม่ต้องการไฟล์ในเวอร์ชันแคชเราต้องการได้รับทรัพยากรรุ่นล่าสุดที่เรากำลังร้องขอ
drAlberT

17

$ wget http://www.somewebsite.com -O foo.html --delete-after


1
ขอบคุณมาก. --delete-afterตัวเลือกที่เป็นทางเลือกเมื่อคุณต้องดาวน์โหลดซ้ำ แต่คุณต้องการที่จะทิ้งเนื้อหาจริง
egelev

+1 สำหรับฉันคำสั่งนั้นเข้าใจง่าย - ฉันสามารถเข้าใจสิ่งที่จะเกิดขึ้นได้อย่างรวดเร็วยิ่งขึ้น-O /dev/null
ฟิวชั่น 27

15

ในกรณีที่คุณต้องการพิมพ์ในคอนโซลผลลัพธ์ที่คุณสามารถทำได้:

wget -qO- http://www.example.com

1
ฉันชอบตัวเลือกนี้ที่ดีที่สุด ฉันขอดูสิ่งที่ได้รับ แต่ไม่ได้บันทึก สวิตช์เป็นqโหมดเงียบโดยเฉพาะ(มันไม่คืบหน้าของการส่งออกและข้อมูลอื่น ๆ ) และO-(เขียนเอกสารที่ดึงมาเพื่อคอนโซล)
Octopus

9

อีกทางเลือกหนึ่งคือการใช้เครื่องมือเช่นcurlโดยค่าเริ่มต้นจะส่งเนื้อหาระยะไกลไปที่stdoutแทนที่จะบันทึกลงในไฟล์


4

ลองดูตัวเลือก "-spider" ฉันใช้เพื่อให้แน่ใจว่าเว็บไซต์ของฉันพร้อมใช้งานและส่งอีเมลถึงฉันหากไม่มี นี่เป็นรายการทั่วไปจาก crontab ของฉัน:

46 */2 * * * if ! wget -q --spider http://www.rochesterflyingclub.com/ >/dev/null 2>&1; then echo "Rochester Flying Club site is down" ; fi

3

หากคุณต้องการรวบรวมข้อมูลเว็บไซต์โดยใช้ wget และต้องการลดการสั่นของดิสก์ ...

สำหรับกล่อง * NIX และการใช้wgetฉันแนะนำให้ข้ามการเขียนไปยังไฟล์ ฉันสังเกตเห็นในกล่อง Ubuntu 10.04 ของฉันที่wget -O /dev/nullทำให้เกิดการยกเลิกการดาวน์โหลดหลังจากการดาวน์โหลดครั้งแรก
ฉันยังสังเกตเห็นว่าwget -O real-fileทำให้ลืมการเชื่อมโยงจริงในหน้า มันยืนยันที่index.htmlจะนำเสนอในแต่ละหน้า หน้าดังกล่าวอาจไม่แสดงอยู่เสมอและ wget จะไม่จดจำลิงก์ที่เคยเห็นก่อนหน้านี้

สำหรับการรวบรวมข้อมูลโดยไม่ต้องเขียนลงดิสก์สิ่งที่ดีที่สุดที่ฉันได้รับมีดังต่อไปนี้

 mkdir /dev/shm/1   
 cd /dev/shm/1
 wget --recursive --relative --no-parent ...

สังเกตเห็นว่าไม่มี-O fileตัวเลือก wget จะเขียนไปยังไดเรกทอรี $ PWD ในกรณีนี้เป็นระบบไฟล์tmpfsที่เป็น RAM เท่านั้น การเขียนที่นี่ควรหลีกเลี่ยงดิสก์ปั่นป่วน (ขึ้นอยู่กับพื้นที่สว็อป) และติดตามลิงก์ทั้งหมด ซึ่งควรรวบรวมข้อมูลเว็บไซต์ทั้งหมดเป็นผลสำเร็จ

หลังจากนั้นแน่นอน

 rm --recursive --force /dev/shm/1/*

2

ใช้ตัวเลือก --delete-after ซึ่งจะลบไฟล์หลังจากดาวน์โหลด

แก้ไข: โอ๊ะฉันเพิ่งสังเกตเห็นว่าได้รับคำตอบแล้ว


0

ตามเอกสารช่วยเหลือ (wget -h) คุณสามารถใช้ตัวเลือก - สไปเดอร์เพื่อข้ามดาวน์โหลด (เวอร์ชั่น 1.14)

Download:
  -S,  --server-response         print server response.
       --spider                  don't download anything.


สิ่งนี้เพิ่มคำตอบอื่น ๆ ที่กล่าวถึง - สไปร์เดอร์ได้อย่างไร
ผู้ป่วย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.