เพิกเฉยกับโดเมน“ อื่น ๆ ” เมื่อดาวน์โหลดด้วย wget หรือไม่


13

ฉันต้องการรวบรวมข้อมูลลิงก์ภายใต้ www.website.com/XYZ และดาวน์โหลดเฉพาะลิงค์ที่อยู่ภายใต้ www.website.com/ABC

ฉันใช้คำสั่ง wget ต่อไปนี้เพื่อรับไฟล์ที่ฉันต้องการ:

wget  -I ABC -r -e robots=off --wait 0.25  http://www.website.com/XYZ

มันทำงานได้อย่างสมบูรณ์แบบเมื่อฉันใช้ wget 1.13.4 แต่ปัญหาคือฉันต้องใช้คำสั่งนี้บนเซิร์ฟเวอร์ที่มี wget 1.11 และเมื่อฉันใช้คำสั่งเดียวกันมันจะสิ้นสุดการดาวน์โหลดโดเมนเพิ่มเติมเช่น:

www.website.de 
www.website.it 
...

ฉันจะหลีกเลี่ยงปัญหานี้ได้อย่างไร ฉันพยายามใช้

--exclude domains=www.website.de,www.website.it

อย่างไรก็ตามมันยังคงดาวน์โหลดโดเมนเหล่านั้น

นอกจากนี้โปรดทราบว่าฉันไม่สามารถใช้งานได้--no-parentเนื่องจากไฟล์ที่ฉันต้องการอยู่ในระดับสูงกว่า (ฉันต้องการไฟล์ภายใต้ website.com/ABC โดยรวบรวมข้อมูลลิงก์ภายใต้ website.com/XYZ)

คำใบ้ใด ๆ


อย่าใช้ URL "ปลอม" และอย่าใช้ URL ของเว็บไซต์ที่ไม่เกี่ยวข้องกับปัญหาของคุณ โดเมนที่คุณระบุไม่มีส่วน "โดเมนย่อย" แต่เป็นโดเมนที่ต่างกันซึ่งอาจเป็นของ บริษัท เดียวกัน
guntbert

มีบางอย่างผิดปกติที่นี่ wgetไม่ควรข้ามโฮสต์โดยค่าเริ่มต้นและคุณต้องการ-H/ --span-hostsตัวเลือกเพื่อข้ามโฮสต์เมื่อทำการเรียกซ้ำ "www.website.com" เป็นโฮสต์ที่แตกต่างจาก "www.website.de" โดยสิ้นเชิง
jw013

@guntbert ขออภัยฉันคิดว่าการให้ URL ที่แท้จริงจะเป็นปัญหา แน่นอนว่าเว็บไซต์ที่ฉันต้องการรวบรวมข้อมูลไม่ใช่เว็บไซต์.com แต่เมื่อฉันรวบรวมข้อมูล example.com ฉันก็เห็น example.it, example.de ในไดเรกทอรีหลัก (ในระดับเดียวกันกับ example.com)
2779485

@ jw013 เช่นที่ฉันพูดไว้ข้างต้นเมื่อฉันเพิ่งให้ www.example.com/x มันจะรวบรวมข้อมูล www.example.de, www.example.it ด้วย แต่สิ่งนี้จะเกิดขึ้นกับ wget 1.11 ไม่ใช่ 1.13 .. ดังนั้นฉันจึงสับสนมาก
user2779485

ดูเหมือนว่าข้อผิดพลาด: wget 1.11 ไม่ควรทำงานแตกต่างกันและ-Hจำเป็นต้องเรียกคืนนอกโฮสต์เดิมเสมอ ไม่-D www.website.comช่วยเหลือ?
Gilles 'SO- หยุดความชั่วร้าย'

คำตอบ:


5

นี่เป็นสิ่งที่ผิด:

--exclude domains=www.website.de,www.website.it

วิธีที่ถูกต้องคือ:

--exclude-domains www.website.de,www.website.it

จากหน้าคน wget:

--exclude-domains domain-list
      Specify the domains that are not to be followed.

ไม่ต้องแยกรายการ komma?
rubo77

@ rubo77 ถูกต้องฉันเปลี่ยนไปแล้ว
Daniel Werner

18

คุณอาจลอง--max-redirect 0หรือใช้เป็นตรงข้าม--domains example.com --exclude-domains example.com

ดู:

  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -np, --no-parent                 don't ascend to the parent directory.
  --max-redirect                   maximum redirections allowed per page.

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