3

www.flipkart.com からすべてのモバイルをスクレイピングしようとしています。今、私が考えているのは、ここからすべてのモバイルをスクレイピングできるということです。

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

さて、問題は、この Web サイトで、より多くの結果を表示するには、[結果をさらに表示] を押さなければならないことです。しかし、コードを使用してこれを行うにはどうすればよいですか? 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'})

出力の最初のページだけを取得しますか? 他のページにアクセスするにはどうすればよいですか?

4

1 に答える 1

7

getパラメーターをいじることができます。通常の URL は次のとおりです。

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

「その他の結果」ボタンを押す (または下にスクロールする) と、AJAX を使用して次のページが次の URL で読み込まれます。

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

URL は次の部分で構成されます。

すべての電話が必要な場合は、'start' 引数を増やしてください。このようなもの:

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

楽しんで

于 2012-12-08T12:19:43.657 に答える