2012-01-12 46 views
0

我有下面Explorer中瀏覽網頁,你可以看到這個頁面上,它是關於外匯交易和網站列表中的所有的真實交易記錄在這裏:如何閱讀完整的HTML源代碼與按鈕「多」

http://www.forexfactory.com/trades.php?reset=1

我通常使用python來閱讀背後的源代碼並通過BeautifulSoup解析信息。然而,在這種情況下,你可以看到,這裏是在窗格的最後一個「更多」點擊按鈕:

a busy cat http://i.minus.com/ibfq5BgLjta0Lo.jpg

如果我點擊它一個時間,交易的名單將延期一次,並在列表的末尾這裏是更多的點擊再次。點擊兩次或三次後,整個列表將完整顯示。我怎麼能讓python以編程代碼的方式點擊更多,然後我可以獲取貿易記錄的整個列表?

以下問題也是如此:通常,我們可以閱讀HTML源代碼,並使用一些解析技術從複雜標籤中獲取文本信息。但是,如果您不去源代碼,但使用鼠標選擇網絡的全部內容,然後點擊「ctrl + c」,那麼您可以看到瀏覽器中顯示的所有文本,而不需要複雜的標籤。我認爲這也可能是獲取信息的另一種方式。但是,似乎python只能讀取HTML源代碼,並且有沒有像我所描述的方式來簡單地選擇web的全部內容然後複製,然後我們得到一個包含整個文本信息而沒有標籤的長字符串?

非常感謝!

回答

2

基本上點擊更多X-Requested-With: XMLHttpRequest標頭設置。你也可以使用Firefox的live http header插件看到它。這意味着正在發出一個Ajax請求。

所以,基本上你有兩個選擇:

1)觀察URL模式的ON點擊more並在代碼中使用它們。

2)你可能被集成在python-spidermonkey module,它旨在從python執行JavaScript。可以使用Selenium。這是一個圖書館,可以讓您使用自己選擇的語言來控制真實的網絡瀏覽器。

+1

或pywebkitgtk或pyphantomjs或一些Python腳本瀏覽器。 – 2012-01-12 19:53:01

1

使用Webkit的開發者工具(特別是網絡),我們可以看到點擊更多地實際上是調用http://www.forexfactory.com/flex.php?do=savestate&flexId=flex_explorer_tradeActivity&more=1。如果我們再次點擊它,它會在more之後放置一個「2」,然後是「3」等。

如果我們查看這些響應,我們會得到一些包含要在網頁上加載的信息的JSON數據。你的工作將是解析這些信息(在網頁上抓取的數據之上)以獲得一組完整的數據。不幸的是,除非您自己構建,否則我無法想到在單擊更多內容後實際獲得HTML的方法。