Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 清理Flipkart.com的所有手机_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 清理Flipkart.com的所有手机

Python 清理Flipkart.com的所有手机,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正试图从www.flipkart.com上搜刮所有手机。现在,我想做的是,我可以从这里刮走所有的手机 http://www.flipkart.com/mobiles/pr?p[]=sort%3Dprice_asc&sid=tyy%2C4io&layout=grid 现在的问题是,在这个网站上,我必须按“显示更多结果”才能看到更多结果。但是,如何使用代码来实现这一点?我正在使用python中的BeautifulSoup包 我的代码到现在为止: import bs4 impor

我正试图从www.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'})

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

您可以使用get参数。常规URL为:

http://www.flipkart.com/mobiles/pr?p[]=排序%3Dprice\u asc&sid=tyy%2C4io&layout=grid

点击“更多结果”按钮(或向下滚动)后,下一页将使用AJAX加载,url如下:

url由以下部分组成:

  • 路径
  • 查询字符串
    • p[]:排序=价格
    • sid:tyy,4io
    • 布局:网格
    • 开始:41
    • ajax:true
如果您想要所有手机,只需增加“开始”参数。大概是这样的:

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
享受, 不会