แพ็คเกจ chromedp
เป็นวิธีที่เร็วกว่าและง่ายกว่าในการขับเคลื่อนเบราว์เซอร์ที่รองรับ Chrome DevTools Protocol ใน Go โดยไม่ต้องพึ่งพาภายนอก
ติดตั้งด้วยวิธี Go ปกติ:
$ ไปรับ -u github.com/chromedp/chromedp
อ้างถึงการอ้างอิง Go สำหรับเอกสารประกอบและตัวอย่าง นอกจากนี้ พื้นที่เก็บข้อมูลตัวอย่างยังมีตัวอย่างเพิ่มเติมเกี่ยวกับการดำเนินการที่ซับซ้อน และงานระดับสูงอื่นๆ ทั่วไป เช่น การจับภาพหน้าจอแบบเต็มหน้า
ฉันไม่เห็นหน้าต่างเบราว์เซอร์ Chrome ใด ๆ
ตามค่าเริ่มต้น Chrome จะทำงานในโหมดไม่มีหัว ดู DefaultExecAllocatorOptions
และตัวอย่างเพื่อแทนที่ตัวเลือกเริ่มต้น
ฉันเห็นข้อผิดพลาด "บริบทถูกยกเลิก"
เมื่อการเชื่อมต่อกับเบราว์เซอร์ขาดหายไป chromedp
จะยกเลิกบริบท และอาจส่งผลให้เกิดข้อผิดพลาดนี้ สิ่งนี้จะเกิดขึ้น เช่น หากเบราว์เซอร์ถูกปิดด้วยตนเอง หรือหากกระบวนการของเบราว์เซอร์ถูกหยุดทำงานหรือยุติลง
Chrome จะออกทันทีที่โปรแกรม Go ของฉันเสร็จสิ้น
บน Linux มีการกำหนดค่า chromedp
เพื่อหลีกเลี่ยงไม่ให้ทรัพยากรรั่วไหลโดยการบังคับฆ่ากระบวนการย่อยของ Chrome ที่เริ่มต้นแล้ว หากคุณต้องการเปิดใช้งานอินสแตนซ์ Chrome ที่ใช้เวลานาน ให้เริ่ม Chrome ด้วยตนเองและเชื่อมต่อโดยใช้ RemoteAllocator
การดำเนินการโดยไม่
Run
ผลลัพธ์ใน "บริบทที่ไม่ถูกต้อง"
ตามค่าเริ่มต้น บริบท chromedp
จะไม่มีตัวดำเนินการ อย่างไรก็ตาม คุณสามารถระบุได้ด้วยตนเองหากจำเป็น ดูปัญหา #326 เป็นตัวอย่าง
ฉันไม่สามารถใช้
Action
กับRun
ได้เพราะมันคืนค่าหลายค่า
ห่อด้วย ActionFunc
:
ctx, ยกเลิก := chromedp.NewContext(context.Background())เลื่อนการยกเลิก()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) ข้อผิดพลาด { _, ผิดพลาด := domain.SomeAction().Do (ctx) กลับข้อผิดพลาด}))
ฉันต้องการใช้ chromedp ในสภาพแวดล้อมที่ไม่มีหัว
วิธีที่ง่ายที่สุดคือการรันโปรแกรม Go ที่ใช้ chromedp ภายในอิมเมจ chromedp/headless-shell รูปภาพนั้นมี headless-shell
ซึ่งเป็น Chrome รุ่นไม่มีส่วนหัวที่เล็กกว่า ซึ่ง chromedp
สามารถค้นหาได้ตั้งแต่แกะกล่อง
headless-shell
- โครงสร้าง headless-shell
ที่ใช้สำหรับทดสอบ chromedp
chromedp: วิธีใหม่ในการขับเคลื่อนเว็บ - GopherCon SG 2017 talk
Chrome DevTools Protocol - การอ้างอิงโปรโตคอล Chrome DevTools
ตัวอย่าง chromedp - ตัวอย่างที่ซับซ้อนมากขึ้นสำหรับ chromedp
github.com/chromedp/cdproto
- ไปอ้างอิงสำหรับ Chrome DevTools Protocol API ที่สร้างขึ้น
github.com/chromedp/pdlgen
- เครื่องมือที่ใช้สร้าง cdproto
github.com/chromedp/chromedp-proxy
- พร็อกซี CDP อย่างง่ายสำหรับการบันทึกไคลเอนต์และเบราว์เซอร์ CDP