2014-05-15 126 views
1

我想寫一個python腳本,將生成我的批次的排名。爲此,我只需要在Web瀏覽器中使用檢查元素功能來更改鏈接的卷號參數。鏈接(相對)如下所示:更改蟒蛇機械化鏈接

/academic/utility/AcademicRecord.jsp?loginCode=000&loginnumber=000&loginName=name&Home=ascwebsite 

我只需要更改loginCode以獲得我的批處理隊友的等級。我正在嘗試使用python遍歷所有roll-numbers並生成一個rank列表。我使用機械化庫來使用python打開網站。代碼的相關部分:

br = mechanize.Browser() 
br.set_handle_robots(False) 
response = br.open('link_to_the_page') 

然後,我進行必要的身份驗證並導航到查看成績鏈接所在的相應頁面。
後來我發現這樣的相關鏈接:

for link in br.links(url_regex='/academic/utility/AcademicRecord.jsp?'): 

現在這裏面我更改URL和適當的鏈接的屬性。 然後我打開鏈接使用:

response=br.follow_link(link) 
print response.read() 

但它不起作用。它打開相同的鏈接,即與初始卷號碼。事實上,我嘗試將鏈接的網址更改爲與http://www.google.com非常不同的網址。

link.url='http://www.google.com' 
link.base_url='http://www.google.com' 

它仍然打開相同的頁面,而不是谷歌的頁面。 任何幫助將不勝感激。

回答

2

按照source codefollow_link()click_link()使用鏈接的是在link initialization期間設置absolute_url屬性。而且,您只設置了urlbase_url屬性。

的解決辦法是改變一個鏈接的absolute_url在循環:

BASE_URL = 'link_to_the_page' 
for link in br.links(url_regex='/academic/utility/AcademicRecord.jsp?'): 
    modified_link = ... 
    link.absolute_url = mechanize.urljoin(BASE_URL, modified_link) 
    br.follow_link(link) 

希望有所幫助。

+0

是啊!有效。非常感謝你。 – user3286661