2017-05-31 61 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