2012-12-08 29 views
3

我想从www.flipkart.com刮去所有的手机。现在,我想要做的是,我可以从这里刮所有的手机。现在刮掉Flipkart.com的所有手机

http://www.flipkart.com/mobiles/pr?p[]=sort%3Dprice_asc&sid=tyy%2C4io&layout=grid 

,问题是,在这个网站,我必须按“表现出更多的成果”查看更多结果。但是,我怎样才能使用代码做到这一点?我在Python中使用BeautifulSoup包。

我的代码至今:

import bs4 
import re 
import urllib2 
import sys 

link = 'http://www.flipkart.com/mobiles/pr?p[]=sort%3Dprice_asc&sid=tyy%2C4io&layout=grid' 
response = urllib2.urlopen(link) 
thePage = response.read() 
soup = bs4.BeautifulSoup(thePage) 
allMobiles = soup.find('div', attrs={'id': 'products'}) 

我只得到输出的第一页?我如何访问其他页面?

回答

7

你可以使用获取参数。一般网址是:

http://www.flipkart.com/mobiles/pr?p[]=sort%3Dprice_asc & SID = TYY%2C4io &布局=电网

一旦你点击了“更多结果按钮(或向下滚动)下一页被使用AJAX使用以下URL加载:

http://www.flipkart.com/mobiles/pr?p%5B%5D=sort%3Dprice_asc&sid=tyy%2C4io&layout=grid&start=41&ajax=true

的URL由以下部分组成:

如果你想所有的手机,只是增加了 '开始' 的说法。事情是这样的:

item_count = 600 
for i in range(0, item_count, 40): 
    link = "http://www.flipkart.com/mobiles/pr?p%5B%5D=sort%3Dprice_asc&sid=tyy%2C4io&layout=grid&ajax=true&start=%d" % (i+1) 

    // Do something with the link 
    print link 

享受, Wout的