Skip to content

โต้ตอบกับเว็บอัตโนมัติด้วย MechanicalSoup

โมดูล MechanicalSoup เป็นโมดูลสำหรับให้เราเขียนคำสั่งในภาษา Python สามารถโต้ตอบกับเว็บอัตโนมัติ โดยสามารถส่งค่าคุกกี้ เส้นทางที่ถูกเปลี่ยนและติดตามการเชื่อมโยงของลิงค์และการส่งข้อมูลผ่านฟอร์ม แต่ไม่รองรับ Javascript ครับ

โมดูล MechanicalSoup
รองรับทั้ง Python 2 , Python 3
ใช้ License: MIT

สามารถติดตั้งได้โดยใช้คำสั่ง pip:

pip install MechanicalSoup

สามารถใช้งานตามตัวอย่างต่อไปนี้

import argparse
import mechanicalsoup

parser = argparse.ArgumentParser(description='Login to GitHub.')
parser.add_argument("username")
parser.add_argument("password")
args = parser.parse_args()

browser = mechanicalsoup.Browser()

# request github login page. the result is a requests.Response object http://docs.python-requests.org/en/latest/user/quickstart/#response-content
login_page = browser.get("https://github.com/login")

# login_page.soup is a BeautifulSoup object http://www.crummy.com/software/BeautifulSoup/bs4/doc/#beautifulsoup
# we grab the login form
login_form = login_page.soup.select("#login")[0].select("form")[0]

# specify username and password
login_form.select("#login_field")[0]['value'] = args.username
login_form.select("#password")[0]['value'] = args.password

# submit form
page2 = browser.submit(login_form, login_page.url)

# verify we are now logged in
messages = page2.soup.find('div', class_='flash-messages')
if messages:
    print(messages.text)
assert page2.soup.select(".logout-form")

print(page2.soup.title.text)

# verify we remain logged in (thanks to cookies) as we browse the rest of the site
page3 = browser.get("https://github.com/hickford/MechanicalSoup")
assert page3.soup.select(".logout-form")

อ่านรายละเอียดเพิ่มเติมได้ที่ https://github.com/hickford/MechanicalSoup/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *