วิธีรับข้อความของหน้าโดยใช้ wget โดยไม่ต้อง html


17

หากฉันลอง wget บนหน้าเว็บฉันจะได้รับหน้าเป็น html เป็นไปได้หรือไม่ที่จะดึงเฉพาะข้อความของไฟล์ที่ไม่มี html ที่เชื่อมโยงอยู่? (สิ่งนี้จำเป็นสำหรับฉันเนื่องจากหน้า HTML บางหน้ามีโปรแกรม c กำลังดาวน์โหลดด้วยแท็ก html ฉันต้องเปิดในเบราว์เซอร์และคัดลอกข้อความด้วยตนเองเพื่อสร้างไฟล์. c)


1
จริงๆแล้วมันเป็นไปได้ .cแต่คุณต้องเขียนฟังก์ชั่นบางอย่างที่จะแยกรหัสจากหน้าและบันทึกเป็น ไม่ยาก แต่ขึ้นอยู่กับโครงสร้างของหน้า ถ้าคุณให้ลิงค์อาจมีบางคนจะช่วยคุณในเรื่องรหัสที่แน่นอน ไม่อย่างนั้นsedหรือperlเป็นเพื่อนของคุณ
เร่ง

คำตอบ:


26

wgetจะเรียกเอกสารเท่านั้น หากเอกสารอยู่ในรูปแบบ HTML สิ่งที่คุณต้องการคือผลลัพธ์ของการแยกวิเคราะห์เอกสาร

ตัวอย่างเช่นคุณสามารถใช้lynx -dump -nolistถ้าคุณมีแมวป่าชนิดหนึ่งรอบ ๆ

lynxเป็นเว็บเบราว์เซอร์ที่มีน้ำหนักเบาและใช้งานง่ายซึ่งมี-dumpคุณสมบัติที่ใช้ในการแสดงผลลัพธ์ของกระบวนการแยกวิเคราะห์ -nolistหลีกเลี่ยงรายการลิงก์ที่ส่วนท้ายซึ่งจะปรากฏหากหน้านั้นมีการเชื่อมโยงหลายมิติ

ตามที่กล่าวไว้โดย @Thor elinksสามารถใช้สำหรับเรื่องนี้ได้เช่นกันเนื่องจากมี-dumpตัวเลือก (และ-no-referencesต้องละเว้นรายการลิงก์) อาจเป็นประโยชน์อย่างยิ่งหากคุณเดินข้ามบางไซต์โดยใช้ -s-- frames (MTFBWY)

นอกจากนี้โปรดทราบว่าหากหน้านั้นเป็นเพียงรหัส C ที่มีแท็ก HTML คุณจะต้องตรวจสอบผลลัพธ์เพื่อให้แน่ใจว่าไม่มีรหัส C มากกว่านั้น


5

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

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

สิ่งนี้ใช้ wget เพื่อถ่ายโอนแหล่งที่มาของหน้าไปยัง STDOUT และกดเพื่อดึง <> คู่ใด ๆ และสิ่งที่อยู่ระหว่างพวกเขา

จากนั้นคุณสามารถเปลี่ยนทิศทางเอาต์พุตของคำสั่ง sed ไปยังไฟล์ที่คุณต้องการสร้างโดยใช้>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

หมายเหตุ: คุณอาจพบว่ามันมีช่องว่างพิเศษในไฟล์ที่คุณไม่ต้องการ (เช่นบรรทัดจะเยื้องคอลัมน์ไม่กี่)

อาจเป็นการง่ายที่สุดที่จะใช้โปรแกรมแก้ไขข้อความเพื่อจัดระเบียบไฟล์ (หรือฟอร์แมตแหล่งที่มาเมื่อคุณดาวน์โหลดซอร์สโค้ด C)

หากคุณต้องการทำสิ่งง่าย ๆ แบบเดียวกันกับทุกบรรทัดของไฟล์คุณสามารถรวมคำสั่งเพื่อทำสิ่งนั้นในคำสั่ง sed (ที่นี่คือการแยกพื้นที่นำหน้าหนึ่ง):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt

3

เพียงเพิ่มเครื่องมืออื่น ฉันชอบw3mซึ่งเป็นlynxเหมือนเบราว์เซอร์คอนโซล คุณอาจต้องการตรวจสอบสิ่งที่มีอยู่แล้วในระบบของคุณ

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