https://mechanicalsoup.readthedocs.io/
ไลบรารี Python สำหรับการโต้ตอบกับเว็บไซต์โดยอัตโนมัติ MechanicalSoup จัดเก็บและส่งคุกกี้โดยอัตโนมัติ ติดตามการเปลี่ยนเส้นทาง และสามารถติดตามลิงก์และส่งแบบฟอร์มได้ มันไม่ทำจาวาสคริปต์
MechanicalSoup สร้างขึ้นโดย M Hickford ซึ่งเป็นผู้ใช้ไลบรารี Mechanize ที่ชื่นชอบ น่าเสียดายที่ Mechanize เข้ากันไม่ได้กับ Python 3 จนถึงปี 2019 และการพัฒนาก็หยุดชะงักไปหลายปี MechanicalSoup มี API ที่คล้ายกัน ซึ่งสร้างขึ้นจากคำขอยักษ์ใหญ่ของ Python (สำหรับเซสชัน HTTP) และ BeautifulSoup (สำหรับการนำทางเอกสาร) ตั้งแต่ปี 2017 เป็นต้นมา โครงการนี้เป็นโครงการที่ได้รับการดูแลอย่างแข็งขันโดยทีมงานเล็กๆ รวมถึง @hemberger และ @moy
รองรับ PyPy3 ด้วย (และทดสอบกับ)
ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดจาก PyPI:
pip ติดตั้ง MechanicalSoup
ดาวน์โหลดและติดตั้งเวอร์ชันการพัฒนาจาก GitHub:
pip ติดตั้ง git+https://github.com/MechanicalSoup/MechanicalSoup
การติดตั้งจากแหล่งที่มา (ติดตั้งเวอร์ชันในไดเร็กทอรีการทำงานปัจจุบัน):
หลาม setup.py ติดตั้ง
(ในทุกกรณี ให้เพิ่ม --user
ในคำสั่ง install
เพื่อติดตั้งในโฮมไดเร็กทอรีของผู้ใช้ปัจจุบัน)
เอกสารฉบับเต็มมีอยู่ที่ https://mechanicalsoup.readthedocs.io/ คุณอาจต้องการข้ามไปยังเอกสาร API ที่สร้างขึ้นโดยอัตโนมัติโดยตรง
จาก examples/expl_qwant.py โค้ดเพื่อรับผลลัพธ์จากการค้นหา Qwant:
"""ตัวอย่างการใช้ MechanicalSoup เพื่อรับผลลัพธ์จากเอ็นจิ้น Qwantsearch"""import reimport mechanicalsoupimport htmlimport urllib.parse# เชื่อมต่อกับ Qwantbrowser = mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')browser.open("https:// lite.qwant.com/")# กรอกคำค้นหา formbrowser.select_form('#search-form')browser["q"] = "MechanicalSoup"browser.submit_selected()# แสดงผลลัพธ์สำหรับลิงก์ใน browser.page.select('.result a'):# Qwant แสดงลิงก์การเปลี่ยนเส้นทาง ไม่ใช่ URL จริง ดังนั้นให้แยก # URL จริงออกจากลิงก์เปลี่ยนเส้นทาง:href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))พิมพ์(link.text, ' ->',href)
มีตัวอย่างเพิ่มเติมอยู่ใน example/
สำหรับตัวอย่างที่มีรูปแบบที่ซับซ้อนมากขึ้น (ช่องทำเครื่องหมาย ปุ่มตัวเลือก และพื้นที่ข้อความ) ให้อ่าน tests/test_browser.py และ tests/test_form.py
คำแนะนำสำหรับการสร้าง การทดสอบ และการมีส่วนร่วมกับ MechanicalSoup: ดูที่ CONTRIBUTING.rst
อ่านคำถามที่พบบ่อย