2017-05-31 114 views
1

我試圖解析以下網站,以獲得(對不起我的俄語)商店中的所有地址:
http://magnit-info.ru/buyers/adds/1258/14/243795網頁解析無硒

在這裏,在頁面的結束只是一個城市的地址。 地址放在塊.b-shops-list中。該塊由POST請求動態填充。當我嘗試使用請求模塊並獲取地址時,它不起作用,因爲該塊在開始時爲空(頁面源)。

我現在正在使用Selenium,但它確實很慢。解析所有城市和地區大約需要2個小時(即使是多處理)。我還必須使用expected_conditions並等待4-5秒以確保POST請求已完成。

有沒有什麼方法可以加速這個過程?我可以通過使用請求以某種方式發送POST請求嗎?如果是的話,我怎麼知道我應該發送什麼樣的POST請求?這個問題也與使用谷歌地圖的網站有關。

謝謝!

+0

2個小時得到3個地址? – depperm

+0

請參閱https://stackoverflow.com/q/22168883/3462319 – depperm

+0

@depperm,no :)此鏈接僅適用於一個城市。網站上每個地區實際上大約有64個地區和15個以上的城市。 – Trarbish

回答

2

我看了一下AJAX請求,這個頁面不會加載地址和與此一小段代碼上來:

import requests 

data = { 
    'op': 'get_shops', 
    'SECTION_ID': 1258, 
    'RID': 14, 
    'CID': 243795, 
} 

res = requests.post('http://magnit-info.ru/functions/bmap/func.php', data=data) 
addresses = res.json() 

如果檢查data字典,你可以清楚地看到,你可以很容易地從你鏈接的URL生成它。

+0

太棒了,謝謝! – Trarbish