2013-10-06 47 views
0

我在網頁上提交查詢。查詢完成前需要幾秒鐘的時間。只有當它完成後,它纔會顯示一個我想從中獲取信息的HTML表格。假設這個查詢最多需要4秒才能加載。儘管我希望在加載數據後立即獲取數據,但等待4秒鐘然後從表中獲取數據是可以接受的。Python 3.X僅在頁面加載完成時才提取源代碼

我遇到的問題是當我做我的urlread請求,頁面尚未完成加載。我嘗試加載頁面,然後發出一個睡眠命令,然後再次加載,但這也不起作用。

我的代碼是

import urllib.request 
import time 

uf = urllib.request.urlopen(urlname) 
time.sleep(3) 
uf.decode('UTF-8') 
text = uf.read() 
print (text) 

我在看的網頁是http://bookscouter.com/prices.php?isbn=9781111835811(隨意忽略有趣的教材哈哈)

而且我在樹莓派

使用Python 3.X
+0

無論誰低估了這一點,我很樂意學習如何改進我的問題。這顯然不是一個家庭作業問題,我真的很難過。我試圖盡我所能地解釋情況,如果答案看起來很簡單,並且我應該知道的東西,對不起,我仍然在學習 – Shaun314

回答

4

你想要的價格不在你正在檢索的頁面中,所以沒有任何等待會讓它們出現。相反,在頁面加載後,該頁面的中的JavaScript 將檢索價格。 urllib模塊不是瀏覽器,因此它不會爲您運行該腳本。你需要弄清楚AJAX請求的URL是什麼(快速瀏覽源代碼給出了一個很大的提示),然後檢索它。這可能是JSON格式,所以你可以使用Python的json模塊來解析它。

+0

Kindall,感謝您的快速回復!我一直在仔細查看源代碼,仍然無法找到自己的ajax調用。我找到了一個js函數「fetch_results_cb」,但我從來沒有看到它在任何地方被調用,因爲我從來沒有看到它調用,我不知道在這種情況下輸入什麼作爲搜索ID。你有沒有看到我錯過的東西? – Shaun314

+0

看起來像http://bookscouter.com/ajax_prices.php?type=PREFERRED&isbn=1111835810&search_id=mu9trjyA7AfUs的作品,他們正在返回HTML。 'search_id'看起來像某種會話ID;可能最好首先檢索主要的HTML頁面並將其刮出(我沒有任何運氣,只是編寫ID或將其丟棄)。 – kindall

相關問題