2017-04-04 38 views
0

我正在嘗試編寫一個python腳本來自動執行一些我在Groupons商業界面網站(賣家)上每天做的任務,他們有一個API訂單但是不是po的,所以我想寫一些東西來刮取數據。BeautifulSoup:只能在點擊jvector地圖後在同一個URL中訪問後才能訪問HTML

但是要選擇您所在的國家/地區,您需要登錄才能獲得jvector地圖,您必須點擊該地區才能訪問login page

您不能右鍵單擊該頁面查看源代碼,但是您可以檢查要單擊的國家/地區的元素。

任何人都可以指點我正確的方向請。

非常感謝。

回答

0

地圖的代碼在頁面源代碼中不可用,因爲它使用的是AJAX渲染。

您仍然可以使用無頭瀏覽器(如PhantomJS)和Selenium(用於操作DOM)的組合來抓取網站。

當你點擊任何一個國家檢查元素,你會看到這樣的代碼

<path d="M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l- 
7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l- 
4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l- 
4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02, 
1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z" data-code="IS" fill="#dadada" 
fill-opacity="1" stroke="none" stroke-width="0" stroke-opacity="1" 
fill-rule="evenodd" class="jvectormap-region jvectormap-element"> 
</path> 

每個國家的代碼是除了「d」和「數據代碼」屬性相似。這兩個對每個國家都是獨一無二的。您可以使用selenium webdriver使用此唯一屬性查找元素,然後使用click方法轉到登錄頁面。我想像網站的其他部分也會加載AJAX中的東西,所以你可以堅持Selenium,PhantomJS和BeautifulSoup組合來模擬用戶登錄(使用你的憑證,我沒有任何我不能嘗試的),然後刮無論你需要什麼結果。

希望這有助於入門!

獎金:要了解這些值「D」屬性意味着,read this

+0

感謝您的提示,還鏈接。我在硒司機遇到一些麻煩,生病了另一個裂縫。 :) –

相關問題