เครื่องมือทดสอบ XPath

เอกสารและนิพจน์ของคุณจะอยู่ในเบราว์เซอร์นี้

วาง XML หรือ HTML ได้สูงสุด 1,000,000 อักขระ การประเมินผลเกิดขึ้นในเบราว์เซอร์นี้โดยใช้ XPath 1.0

ใช้ XPath 1.0 ได้ทั้งแบบสัมบูรณ์และแบบสัมพัทธ์ prefix ที่ประกาศไว้ในเอกสารจะถูกลงทะเบียนให้อัตโนมัติ ส่วน namespace เริ่มต้นเรียกใช้ได้ผ่าน prefix d

การเขียน XPath สำหรับงาน web scraping หรือ XSLT คือการเดาสุ่มไปเรื่อย ๆ ถ้าคุณไม่มีสนามทดลองแบบสด เครื่องมือนี้รับ XML หรือ HTML ของคุณในช่องหนึ่งและนิพจน์ในอีกช่องหนึ่ง แล้วประเมิน XPath 1.0 ด้วยเอนจินของเบราว์เซอร์ของคุณเอง จากนั้นแสดงทุกโหนดที่ตรงกันพร้อมชนิดโหนด แอตทริบิวต์ เนื้อหาข้อความ และมาร์กอัปที่ซีเรียไลซ์แล้ว นิพจน์แบบสเกลาร์อย่าง count(//book) จะคืนค่าออกมาโดยตรง ส่วนพรีฟิกซ์เนมสเปซที่ประกาศไว้ในเอกสารจะถูกลงทะเบียนให้อัตโนมัติ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ: เอกสารไม่ถูกอัปโหลดไปที่ใดเลย

วิธีทดสอบนิพจน์ XPath

  1. 1

    วาง XML หรือ HTML

    การตรวจจับอัตโนมัติจะสลับไปใช้การแยกวิเคราะห์ HTML แบบผ่อนปรนเมื่อพบ doctype หรือรูตของ HTML และคุณยังบังคับเลือกโหมด XML หรือ HTML เองได้

  2. 2

    ป้อนนิพจน์ XPath ของคุณ

    แบบสัมบูรณ์ (`/library/book`) หรือแบบสัมพัทธ์ (`//div[@class='card']`) ใช้ได้กับนิพจน์ XPath 1.0 ทุกแบบ

  3. 3

    ประเมินผล

    เอนจิน XPath ของเบราว์เซอร์รันคิวรีในเครื่องของคุณเอง ไม่มีการส่งอะไรไปยังเซิร์ฟเวอร์

  4. 4

    ตรวจดูผลลัพธ์

    แต่ละรายการที่ตรงกันจะแสดงชนิดโหนด แอตทริบิวต์ ข้อความที่ตัดให้สั้น และมาร์กอัปที่ซีเรียไลซ์แล้ว โดยแสดงได้สูงสุด 200 รายการ

พื้นฐาน XPath 1.0

นิพจน์ สิ่งที่ตรงกัน
/books/book <book> ที่เป็นลูกของรูต <books>
//book <book> ทุกตัวไม่ว่าอยู่ตรงไหนของเอกสาร
//book[@id='42'] <book> ที่มีแอตทริบิวต์ id เท่ากับ 42
//book[1] <book> ตัวแรกของแต่ละพาเรนต์ (ไม่ใช่ของทั้งเอกสาร)
(//book)[1] <book> ตัวแรกของทั้งเอกสาร
//book[title='1984'] <book> ที่ข้อความใน <title> คือ “1984”
//book/@id แอตทริบิวต์ id ของทุกอิลิเมนต์ <book>
//book[position() > 1] <book> ทุกตัวยกเว้นตัวแรก
//book[last()] <book> ตัวสุดท้ายของแต่ละพาเรนต์

นิพจน์แบบสเกลาร์ก็ใช้ได้เช่นกัน: count(//book) คืนค่าตัวเลข string(//title) คืนสตริง และ boolean(//book[@id]) คืนจริงหรือเท็จ เครื่องมือจะแสดงค่าเหล่านั้นโดยตรงแทนที่จะเป็นรายการโหนด

แกนที่ใช้บ่อยนอกเหนือจาก child

  • ancestor:: บรรพบุรุษทั้งหมด
  • following-sibling:: โหนดพี่น้องที่อยู่ถัดจากโหนดปัจจุบัน
  • preceding-sibling:: โหนดพี่น้องที่อยู่ก่อนหน้า
  • descendant:: โหนดลูกหลานทั้งหมด
  • attribute:: (ตัวย่อ @) แอตทริบิวต์ของโหนดปัจจุบัน
  • parent:: (ตัวย่อ ..) อิลิเมนต์พาเรนต์

ข้อควรรู้เกี่ยวกับ HTML

HTML ไม่ใช่ XML แบบเข้มงวด เครื่องมือจึงแยกวิเคราะห์อย่างผ่อนปรนด้วยพาร์เซอร์ HTML ของเบราว์เซอร์คุณแทนพาร์เซอร์ XML แบบเข้มงวด โหมด HTML จะถูกตรวจจับอัตโนมัติจาก <!DOCTYPE html> หรือรูต <html> และคุณบังคับเลือกโหมดใดโหมดหนึ่งได้จากตัวเลือกโหมดเอกสาร ในโหมด HTML ชื่อแท็กและชื่อแอตทริบิวต์จะถูกแปลงเป็นตัวพิมพ์เล็ก จึงควรเขียน XPath ด้วยตัวพิมพ์เล็ก: //div[@class] ไม่ใช่ //DIV[@CLASS]

เนมสเปซ

XML ที่มีเนมสเปซต้องลงทะเบียนพรีฟิกซ์ก่อน:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <item>
    <content:encoded>...</content:encoded>
  </item>
</rss>

เครื่องมือจะสแกนเอกสารเพื่อหาการประกาศ xmlns แล้วลงทะเบียนทุกพรีฟิกซ์ให้อัตโนมัติ ดังนั้น //content:encoded จึงใช้ได้ทันที ส่วนเนมสเปซเริ่มต้น (xmlns="..." เปล่า ๆ) ไม่มีพรีฟิกซ์ในเอกสาร เครื่องมือจึงผูกไว้กับพรีฟิกซ์ d: เลือกอิลิเมนต์ <item> ในฟีดที่ใช้เนมสเปซเริ่มต้นด้วย //d:item เนมสเปซที่ลงทะเบียนแล้วจะแสดงอยู่ข้างผลลัพธ์

สิ่งที่เครื่องมือนี้ไม่ประเมิน

เบราว์เซอร์ประเมิน XPath 1.0 ซึ่งเป็นสำเนียงเดียวกับที่เครื่องมือ scraping ส่วนใหญ่ใช้ ฟีเจอร์ของ XPath 2.0 ขึ้นไป เช่น matches(string, regex), tokenize(string, delimiter), นิพจน์ for ... return และตัวดำเนินการซีเควนซ์ ไม่ได้เป็นส่วนหนึ่งของมัน คุณจะพบฟีเจอร์เหล่านี้ในชุดเครื่องมือ XSLT 2.0/3.0 XPath 1.0 ยังคงเป็นตัวเลือกที่พกพาได้กว้างที่สุดสำหรับ web scraping

เคล็ดลับการทดสอบ

  • เริ่มจากกว้างแล้วค่อยบีบให้แคบ เริ่มจาก //div ตามด้วย //div[@class] แล้วจึงระบุค่า class ที่ต้องการ
  • ตรวจการประกาศเนมสเปซ ปัญหา “ทำไม XPath ของฉันไม่คืนอะไรเลย” ส่วนใหญ่มาจากเนมสเปซ ให้ดูรายการเนมสเปซที่ลงทะเบียนแล้ว
  • ระวังตัวพิมพ์ใหญ่เล็ก XML แยกแยะตัวพิมพ์ใหญ่เล็ก ส่วนโหมด HTML จะแปลงชื่อเป็นตัวพิมพ์เล็ก
  • ลองใช้ string() เมื่อดึงข้อความ //p/text() กับ string(//p) ให้ผลต่างกันเมื่อมีมาร์กอัปซ้อนอยู่ข้างใน

คำถามที่พบบ่อย

ไม่ รองรับเฉพาะ XPath เบราว์เซอร์ส่วนใหญ่รองรับทั้งสองแบบผ่าน document.querySelectorAll (CSS) และ document.evaluate (XPath) เลือกใช้แบบที่ชัดเจนกว่าสำหรับงานนั้น

การแยกวิเคราะห์ HTML จะแปลงชื่อแท็กและแอตทริบิวต์เป็นตัวพิมพ์เล็ก ตรวจให้แน่ใจว่า XPath ของคุณใช้ตัวพิมพ์เล็ก: //div[@class] ไม่ใช่ //DIV[@CLASS] และอย่าลืมเช็กโหมดด้วย: การบังคับโหมด XML กับ HTML ที่หละหลวมจะล้มเหลวพร้อมข้อผิดพลาดการแยกวิเคราะห์ ขณะที่โหมด HTML จะแยกวิเคราะห์อย่างผ่อนปรน

พรีฟิกซ์ที่ประกาศในเอกสารจะถูกลงทะเบียนให้นิพจน์ของคุณอัตโนมัติ เนมสเปซเริ่มต้นจะถูกผูกกับพรีฟิกซ์ d ดังนั้น //d:item จะเลือกอิลิเมนต์ <item> ในเอกสารที่ใช้เนมสเปซเริ่มต้น การผูกที่ใช้งานอยู่จะแสดงพร้อมผลลัพธ์

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

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

เครื่องมือเลือกสี HEX

เลือกหรือป้อนสี HEX แล้วดูค่า RGB, HSL, CMYK โดยประมาณ ค่าความสว่างสัมพัทธ์ และคอนทราสต์กับสีขาวและสีดำ

เลขฐานสองเป็นฐานสิบ

แปลงเลขฐานสองเป็นฐานสิบ หรือเลขฐานสิบเป็นฐานสองได้ทันที วางตัวเลขหนึ่งตัวแล้วอ่านผลลัพธ์

เครื่องกำเนิดจานสี

สร้างพาเลตสีแบบเอกรงค์ ใกล้เคียง คู่ตรงข้าม ไตรแอดิก หรือเตตราดิกจากสี HEX หลัก พร้อมส่งออกตัวแปร CSS ที่คัดลอกได้ทันที