นี่คือการใช้งานโปรโตคอลการยกเว้น Robots.txt สำหรับภาษา Go (Golang)
ในการสร้างและเรียกใช้การทดสอบรันไปทดสอบในไดเรกทอรีต้นฉบับ
ยินดีต้อนรับอย่างอบอุ่น
ขอบคุณ
ตามปกติไม่จำเป็นต้องมีการติดตั้งพิเศษเพียงแค่
นำเข้า "github.com/temoto/robotstxt"
Run Go Get และคุณพร้อม
ก่อนอื่นคุณต้องแยกวิเคราะห์ข้อมูล robots.txt คุณสามารถทำได้ด้วยฟังก์ชั่นจาก bybytes (body [] byte) (*robotsdata, ข้อผิดพลาด) หรือเหมือนกันสำหรับสตริง:
Robots, err: = robotstxt.frombytes ([] byte ("ผู้ใช้ตัวแทน: * ndisallow:")))
Robots, err: = robotstxt.fromstring ("ผู้ใช้ตัวแทน: * ndisallow:")
ณ ปี 2012-10-03 Frombytes เป็นวิธีที่มีประสิทธิภาพที่สุดทุกอย่างอื่นเป็นเครื่องห่อหุ้มสำหรับฟังก์ชั่นหลักนี้
มีตัวสร้างที่สะดวกไม่กี่ตัวสำหรับวัตถุประสงค์ต่าง ๆ :
จากการตอบสนอง http ไม่ เรียกตอบกลับ body.close ():
Robots, err: = robotstxt.fromResponse (resp)
resp.body.close ()
ถ้า err! = nil {
log.println ("ข้อผิดพลาดแยกวิเคราะห์ robots.txt:", err.error ())
-
จาก Statusandstring หากคุณต้องการอ่านไบต์ (สตริง) ด้วยตัวคุณเอง รหัสสถานะการส่งผ่านใช้ตามตรรกะตามการตีความของ Google ของ Robots.txt ไฟล์:
- สถานะ 2xx -> ตัวแยกวิเคราะห์ด้วย FromBytes และใช้กฎที่ระบุไว้ที่นั่น
- สถานะ 4xx -> อนุญาตทั้งหมด (แม้กระทั่ง 401/403 ตามที่ Google แนะนำ)
- อื่น ๆ (5xx) -> ไม่อนุญาตทั้งหมดพิจารณาสิ่งนี้ไม่พร้อมใช้งานชั่วคราว
Parsing Robots.txt เนื้อหาสร้างฐานข้อมูลตรรกะชนิดหนึ่งซึ่งคุณสามารถสอบถามได้ด้วย (R *RobotsData) Testagent (URL, Agent String) (BOOL)
การส่งผ่านเอเจนต์อย่างชัดเจนมีประโยชน์หากคุณต้องการสอบถามสำหรับตัวแทนที่แตกต่างกัน สำหรับผู้ใช้ตัวแทนเดี่ยวมีตัวเลือกที่มีประสิทธิภาพ: RobotsData.FindGroup (useragent String) ส่งคืนโครงสร้างด้วยวิธี. test (Path String) และ. crawldelay time.duration
แบบสอบถามง่าย ๆ กับเอเจนต์ผู้ใช้ที่ชัดเจน การโทรแต่ละครั้งจะสแกนกฎทั้งหมด
อนุญาต: = robots.testagent ("/", "foobot")
หรือสอบถามหลายเส้นทางกับตัวแทนผู้ใช้เดียวกันเพื่อประสิทธิภาพ
กลุ่ม: = Robots.findgroup ("Barbot")
group.test ("/")
group.test ("/ดาวน์โหลด. mp3")
group.test ("/News/article-2012-1")
ผู้มีส่วนร่วมที่มีเกียรติ (ตามลำดับที่ไม่ได้กำหนด):
- Ilya Grigorik (Igrigorik)
- Martin Angers (Puerkitobio)
- Micha Gorelick (mynamefiber)
เริ่มต้นและอื่น ๆ : sergey shepelev [email protected]