讓我先說我有很少的編程經驗作序。在過去的幾天裏,我學到了一大堆試圖編寫這個程序的文章。我在Windows 7上使用PyCharm,請求,美麗的湯和lxml運行Python 2.7。使用請求登錄到一個網站,有JavaScript的登錄表單
我試圖從一個網站,在很大程度上依賴於JavaScript抽取數據。我有兩個選擇:
1)我需要的數據是通過JavaScript填充,並不一定需要登錄。但是我一直無法知道如何獲取這些數據。我使用Live HTTP Headers chrome插件來監控標頭,我想我已經找到了這樣做的Javascript,但我無法解決這個問題。它有很長的一段代碼,如果有人有興趣看一下,我會發布它。
或
2)我發現了一個系列的,我可以用它來生成的URL爲每個單獨的項目,我分析的ID號的主要頁面之一。問題是我必須登錄才能看到這些單獨的項目頁面。我的代碼如下:
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
from BeautifulSoup import BeautifulSoup
import ssl
# Request a date from user
UDate = "06/22/2015" # raw_input('Enter a date mm/dd/yyyy\n')
# Open TLSv1 Adapter (Whataver that means)
class MyAdapter(HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1)
# Begin a requests session. Every get from here on out will use TLSv1 Protocol
import requests
payload = {
'LogName': 'xxxxxxxx',
'LogPass': 'xxxxxxxx'
}
s = requests.Session()
s.mount('https://xxxx.xxx', MyAdapter())
# Login with post and Request source code from main page.
log = s.post('LoginURL', data=payload)
print log.text
result = s.get(url)
soup = BeautifulSoup(result.content)
print soup
郵件或獲取都不顯示我登錄的網站。從HTML源代碼logform ID的是這樣的:
<div id="DivLogForm">
<label for="BadText"><div id="BadText" class="BadText" style="display:none" tabindex="-2">User Name or Password is Invalid</div></label>
<div class="LogLabel">
<label for="LogName" > User Name </label><input tabindex="0" id="LogName" class="LogInput" value="" />
</div>
<div class="LogLabel">
<label for="LogPass" >User Password </label><input tabindex="0"id="LogPass" type="password" class="LogInput" value="" />
</div>
所以我路過LOGNAME和LogPass與職。
還擁有這段代碼
$("#LogButton").click(function()
{ //$('#divLogForm').hide();
//$('#divLoading').show();
var uName = $("#LogName").val();
var uPass = $("#LogPass").val();
var url = "/index.cfm";
$.post(url, {ZACTION:'AJAX',ZMETHOD:'LOGIN',func:'LOGIN',USERNAME:uName, USERPASS:uPass},
function(data){if (data.isOk =="YES"){location.href="/index.cfm";}
else {$('.BadText').show(); $('#BadText').focus();};
},"json");
});
的LoginURL在我的代碼logform.js從VAR URL採取了這種腳本。我已經使用用戶名&爲userpass試過,我曾嘗試UNAME和uPass與我的職位,但這些沒有工作要麼。
不知道如何前進這裏。任何幫助,非常感謝
那精美的作品。現在看起來很明顯。謝謝一堆。我有一個新的問題,現在(例如是編碼即時通訊開始實現的性質):我所有的被重定向到一個公告頁面,而不是頁面與內容IM後... –
什麼樣的消息?您應該在瀏覽器上訪問這些頁面,並查看實際發送的頁面請求中的內容。這可能是因爲你在頭文件中丟失了某些東西。 – junnytony
其關於網站政策變更的一般公告。我在瀏覽器中獲得相同的重定向。它剛剛開始,昨天沒有發生。 –