import mechanize import cookielib # Browser br = mechanize.Browser() # Cookie Jar cj = cookielib.LWPCookieJar() br.set_cookiejar(cj) # Browser options br.set_handle_equiv(True) #br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) # Follows refresh 0 but not hangs on refresh > 0 br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) # Want debugging messages? #br.set_debug_http(True) #br.set_debug_redirects(True) #br.set_debug_responses(True) # User-Agent (this is cheating, ok?) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
將以上程式碼存成 browser.py , 丟到python27/lib 目錄裡
這樣一個簡單實用的陽春型模擬器就完成了。
我們每次要用時就可以很方便的呼叫出來用
>>> from browser import br
到無名逛逛
>>> html = br.open('http://www.wretch.cc/blog/').read()
>>> br.title()
'Blog - Wretch.cc'
這樣我們就已經到了無名
如果想登入的話,我們可以打開登入的網址
>>> html = br.open('https://login.yahoo.com/config/login?.intl=tw&.partner=&.last=&.src=wrtch&.scrumb=0&.pd=c=R.kjIs2p2e5IjYgxHnmFvubWqw--&pkg=&stepid=i&&.done=https%3a//login.yahoo.com/config/validate%3f.src=wrtch%26.pc=1164%26.scrumb=0%26.done=http%3a//www.wretch.cc/IDintegration/?ref=%25252Fblog%25252F').read()
>>> print br.title() 登入 - Yahoo!奇摩
登入的網址挺長的
>>> for f in br.forms(): print f
會將網頁的form秀給我們看>>> br.select_form(name="login_form")
得看網頁的form 設什麼名字,萬一沒有設,我們可以用
>>> br.select_form(nr=0) # 看是第幾個form,數字就輸入多少
如果還查找不到,那麼form可能是用javascript動態生成,在此就不介紹處理方法。
>>> br.form['login'] = '帳號'
>>> br.form['passwd'] = '密碼'
>>> br.submit() #請程式送出登入form
成功的話,我們就可以以登入帳號的狀態去瀏覽無名網站。
再配合
Beautiful Soup, re, XPath(lxml)
等查找網頁元素資料工具,想要什麼資料將是輕而易舉!
# 以XPath 簡單示範一下import lxml.html as H
>>> html = br.open('http://www.wretch.cc/blog/XXXXXX').read()
>>> blog = H.document_fromstring(html) #格式化網頁資料元素
>>> who = blog.xpath("//div[@id='whowrapper']/ul/li/a/@href") #抓出誰來我家連結
>>> for w in who:
print w
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/as12345634
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/xdxd0819
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/s5725j5725
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/baibai0914
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/happy880328
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/candy88622
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/alice21622
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/cul3977ssy
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/weary898
>>>
這樣我們就知道誰來過了
Chrome 瀏覽器,可以查看網頁元素 轉 xpath,很方便。
沒有留言:
張貼留言