以下提供一個簡單的網頁做示範 post.php
<html> <head> </head> <body> <?php if ($_POST) {echo "<p>Hi ".$_POST[Name]." !</p>";} ?> <form id="Post_DEMO" name="Form_DEMO" method="post" action="post.php"> <h1>Nice to meet you. I am POST_DEMO!</h1> <h2>What is your name?</h2> <input type="text" name="Name" id="Name" /> <input type="submit" name="button" id="button" value="Confirmed" /> </form> </body> </html>
基本上這是一個打招呼的網頁,網頁中有一個表單讓使用者填入自己的名字,送出表單後網頁會重新載入並顯示 Hi "使用者名字" 的訊息,當然機器人應該也能跟網頁打招呼,於是借助 curl 的 POST 工能,在 setopt 時增加 POST 以及 POSTFIELD 的設定讓機器人也能送出表單。
假設 post.php 路徑為 http://www.mypage.tw/post.php ,Post 機器人如下:
#! /usr/bin/env python import pycurl class GetPage: def __init__ (self, url): self.contents = '' self.url = url def read_page (self, buf): self.contents = self.contents + buf def show_page (self): print self.contents class GetPageByFakeBrowser(GetPage): def __init__ (self, url, ua): self.contents = '' self.url = url self.ua = ua mypage = GetPageByFakeBrowser( \ "http://www.mypage.tw/post.php", \ "Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.2.15 Version/10.00") testcurl = pycurl.Curl() testcurl.setopt(testcurl.URL, mypage.url) testcurl.setopt(testcurl.USERAGENT, mypage.ua) testcurl.setopt(testcurl.WRITEFUNCTION, mypage.read_page) testcurl.perform() testcurl.setopt(testcurl.POST, 1) testcurl.setopt(testcurl.POSTFIELDS, "Name=Robot&button=confirmed") testcurl.perform() testcurl.close() mypage.show_page()
如此一來機器人就有讀取網頁以及送出表單的功能,接下來我們希望它能做一些較複雜的事情。