我有一個Python腳本使用機械化瀏覽器登錄到自我託管的WordPress博客,導航到不同的頁面後自動重定向到儀表板自動化幾個內置函數。機械和Python沒有正確處理餅乾
這個腳本實際上在我的大部分博客中都能100%地工作,但是與其中一個博客進入永久循環。
區別在於唯一失敗的是一個名爲Wassup running的插件。這個插件爲所有訪問者設置了一個會話cookie,這就是我認爲會導致這個問題的原因。
當腳本進入新頁面時,Wordpress代碼沒有得到正確的cookie集,決定瀏覽器未登錄並重定向到登錄頁面。該腳本再次登錄並嘗試相同的功能,我們再次去。
我試過使用Twill,它可以正確登錄並正確處理cookie,但默認情況下,Twill會將所有內容輸出到命令行。這不是我想要的行爲,因爲我現在正在進行頁面操作,並且需要訪問原始html。
這是設置代碼
# Browser
self.br = mechanize.Browser()
# Cookie Jar
policy = mechanize.DefaultCookiePolicy(rfc2965=True)
cj = mechanize.LWPCookieJar(policy=policy)
self.br.set_cookiejar(cj)
成功登錄我調用這個函數
def open(self):
if 'http://' in str(self.burl):
site = str(self.burl) + '/wp-admin/plugin-install.php'
self.burl = self.burl[7:]
else:
site = "http://" + str(self.burl) + '/wp-admin/plugin-install.php'
try:
r = self.br.open(site, timeout=1000)
html = r.read()
return html
except HTTPError, e:
return str(e.code)
我在想,我需要將餅乾保存到一個文件,然後打亂順序後所以Wordpress會話cookie會在Wassup之前返回。
其他建議?
看看了'requests'庫 - 使得處理這些事情* *很多簡單 – 2012-08-11 14:38:42
@喬恩克萊門特。感謝你的回答。我昨晚在您的評論後,設法與請求庫保持一段高質量的時間,並發現它符合我的喜好。我的確從命令行看來,在登錄時工作得很好,我認爲如果需要的話,我也可以操作這些cookie。這個庫是爲什麼機械化和斜紋不再被使用? – Burtm10 2012-08-12 01:37:40
不能說真的 - 我認爲機械化和斜紋真的是別的東西,請求只是爲了讓事情比現有的urllib庫更容易。發生很多事情重疊或可能重疊... – 2012-08-12 14:10:43