python_org_windows.png

安裝windows版的python到我的VirtualBox上WIN7,到 https://www.python.org/ 下載

 

python_windows_executable_installer.png

Download excutable Installer版本,要32/64bit就看你的作業系統了!

 

python_Bootstrapping_pip.png

試了很久才發現pip雖然3.4就預載但不能直接用,原來還要Bootstrapping pip 參考下面網址 https://docs.python.org/3/library/ensurepip.html

 

python_ensurepip.png

執行python -m ensurepip

 

執行Python的Module Docs可以查看目前的 Modules

 

python_BS4_Download.png

再來下載Beautiful Soup到PC上並解壓縮 網址:https://www.crummy.com/software/BeautifulSoup/#Download

 

python_BS4_Build_Install.png

在解壓縮的目錄找到setup.py並執行(python 的路徑要加到PATH裡)

python setup.py build

python setup.py install

 

python_BS4_Module_Index.png

再執行Python的Module Docs可以查看目前的 package已有bs4

 

python_pip3_install_wxPython_01.png

WxWidgets應該算是近幾年了比較流行的GUI跨平台開發技術了。 wxWidgets有不同的版本應用,有c++的,也有basic的,現在在python上面也有較好的移植。wxpython的功能上面要強於 tkinter,她提供了超過200個類,面向對象的編程風格,設計的框架類似於MFC。對於大型GUI應用上面,wxPython還是具有很強的優勢 的。boa constructor可以幫助我們快速可視地構建wxwidgets界面。 安裝wxPython

 

python_pip3_install_wxPython_02.png

 

python_pip3_install_wxPython_03.png

 

selenium_firefox_002.png

Selenium 是為瀏覽器自動化(Browser Automation)需求所設計的一套工具集合,讓程式可以直接驅動瀏覽器進行各種網站操作。 使用webdriver.Firefox()即可但有error ,需要Geckodriver Webdriver 才可以正常啟動,因此到這裡下載最新的 Geckodriver 版本 https://github.com/mozilla/geckodriver/releases

如果你是使用Chrome 把Code改成driver=webdriver.Chrome() 並到這裡下載最新的chromedriver.exe https://sites.google.com/a/chromium.org/chromedriver/downloads

 

selenium_firefox_003.png

下載完geckodriver.exe後放到python.exe的目錄就好了.再執行webdriver.Firefox()就沒有error

 

 

python_auto_login_001.png

使用urllib+BeautifulSoup來做auto login

url='http://192.168.2.1'

headers = {};
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; rv:54.0) Gecko/20100101 Firefox/54.0';
headers['Accept'] ='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
headers['Accept-Language'] ='zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3'
headers['Accept-Encoding'] ='Accept-Encoding: gzip, deflate'

req = urllib.request.Request(url, headers=headers);
HtmlResponse = urllib.request.urlopen(req)
HtmlPureContent= HtmlResponse.read()
sp = BeautifulSoup(HtmlPureContent,"html.parser")

sp已可以讀出html裡tag的資料,例如sp.form, sp.find('form'), sp.form.findAll('input'),分析需要填入哪些資料,下面是已經分析完,已準備好要填入的資料

HTTP Referer是header的一部分,當瀏覽器向web伺服器發送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的,伺服器借此可以獲得一些資訊用於處理。

 

python_auto_login_002.png

headers2 = {};
headers2['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; rv:54.0) Gecko/20100101 Firefox/54.0';
headers2['Accept'] ='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
headers2['Accept-Language'] ='zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3'
headers2['Accept-Encoding'] ='Accept-Encoding: gzip, deflate'
headers2['Referer'] ='http://192.168.2.1/'

values = {'Username' : 'admin',
              'Password' : 'admin',
              'oth'           : '1'}
postdata = urllib.parse.urlencode(values).encode("utf-8")

req = urllib.request.Request(sSumbitFormURL, data=postdata,headers=headers2);
HtmlSumbit = urllib.request.urlopen(req)

 

python_auto_login_003.png

成功的話在下面的code會讀回login後的頁面的index

SubmitPureContent= HtmlSumbit.read()
sp_pass = BeautifulSoup(SubmitPureContent,"html.parser")
meta_tag=sp_pass.find('meta')
print(meta_tag)
sStr1=meta_tag['content']
print(sStr1)
sStr1List=sStr1.split()
for testStr in sStr1List:
    if 'url' in testStr:
        sURLStr1List=sStr1.split('=')
        sPassNewURL=url+sURLStr1List[1]
        print(sPassNewURL)

 

arrow
arrow
    全站熱搜

    peter27863043 發表在 痞客邦 留言(0) 人氣()