บังคับให้ใช้ชื่อไฟล์จริง


50

เมื่อใช้wgetในสคริปต์เพื่อดาวน์โหลดไฟล์บางไฟล์จาก Google เอกสารชื่อของไฟล์จะไม่ถูกสงวนไว้ ตัวอย่างเช่น:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

บันทึกไฟล์pub?key=pyj6tScZqmEfbZyl0qjbiRQแทนindicatorhivestimatedprevalence15-49.xlsซึ่งเป็นสิ่งที่ฉันได้รับถ้าฉันคลิกที่ลิงค์ในเบราว์เซอร์ มีวิธีใดที่จะบังคับใช้พฤติกรรม "เหมือนเบราว์เซอร์" นี้wgetหรือไม่?

คำตอบ:


90
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

จะทำเคล็ดลับสำหรับคุณ

มันยังไม่ได้ใช้งานอย่างสมบูรณ์และดูเหมือนว่าจะมีข้อผิดพลาดเล็กน้อยในบางครั้งดังนั้นจึงไม่ใช่ตัวเลือกเริ่มต้นในการwgetใช้ความเสี่ยงของคุณเอง


1
ฉันรู้ว่า...! มีความสุขใช่มั้ย ;)
Bruno Pereira

ฉันไม่ได้เป็นโปรแกรมเมอร์เว็บมากนักดังนั้นฉันจึงไม่เคยคิดที่จะมองหาวลี "การจัดการเนื้อหา" คุณบันทึกฉันต้องดูที่ส่วนหัว HTTP ค้นพบส่วนหัวการจัดการเนื้อหาและจัดการกับมัน
Chinmay Kanchi

ว้าว + น่าทึ่ง ขอบคุณคุณความคิดที่ดี
Kangarooo

@BrunoPereira ฉันพยายามดาวน์โหลดไฟล์ google spreadsheet ด้วย แต่ฉันไม่พบลิงค์สำหรับไฟล์ คุณช่วยบอกวิธีรับลิงค์สำหรับไฟล์ google สเปรดชีตได้ไหมเพื่อที่ฉันจะได้ใช้วิธีเดียวกันกับ Chinmay Kanchi ขอบคุณล่วงหน้า.
user22180

@ChinmayKanchi ฉันเรียกตัวเองว่าเป็นโปรแกรมเมอร์เว็บเมื่อ 15 ปีที่แล้ว แต่เมื่อพูดถึงเรื่องนี้ฉันมักจะลองใช้ชื่อที่มีความหมายมากกว่าในโค้ด
tishma

3

คุณสามารถลองใช้curlเพื่อดาวน์โหลดและเก็บชื่อไฟล์เดิมได้:

curl -OJL ${your_url}
  • -O สำหรับชื่อระยะไกล
  • -J สำหรับชื่อส่วนหัวระยะไกล
  • -L สำหรับตำแหน่ง

ดูตัวเลือกบรรทัดคำสั่งขด


0

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

เพื่อที่จะดาวน์โหลดไฟล์ที่คุณจะต้องใช้ Google API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/


ใช่เซิร์ฟเวอร์กำลังขอให้สคริปต์ทำงานซึ่งสร้าง.xlsไฟล์ได้ทันที อย่างไรก็ตามเบราว์เซอร์เต็มรูปแบบไม่มีปัญหากับเรื่องนี้ ดังนั้นจึงเป็นไปได้ที่จะทำโดยไม่มี Docs API
Chinmay Kanchi

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