2016-01-06 3 views
0

С помощью этого кодаКак использовать запросы python получить весь ответ?

import pandas as pd 
import requests 

link = "http://sp.kaola.com/api/category/goods?pageNo=1&pageSize=20&search=%7B%0A%20%20%22sortType%22%20%3A%20%7B%0A%20%20%20%20%22type%22%20%3A%200%0A%20%20%7D%2C%0A%20%20%22isNavigation%22%20%3A%20%220%22%2C%0A%20%20%22filterTypeList%22%20%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22id%22%20%3A%20%5B%0A%20%20%20%20%20%20%20%204055%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22type%22%20%3A%201%2C%0A%20%20%20%20%20%20%22category%22%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%22parentCategoryId%22%20%3A%200%2C%0A%20%20%20%20%20%20%20%20%22categoryId%22%20%3A%204055%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22source%22%20%3A%201%2C%0A%20%20%22noStoreCount%22%20%3A%200%2C%0A%20%20%22isActivity%22%20%3A%200%2C%0A%20%20%22storeCount%22%20%3A%2060%0A%7D" 
df = reqeusts.get(link).json() 
print df 

я могу получить ответ на URL я запросов.

Но как я могу получить данные, когда GET arg url становится pageNo = 3, 4 и так далее? Я хочу получить все ответы со всех страниц в одном запросе. Если это возможно?

На каждой странице я могу получить 20 ответов. Как я могу получить все из них?

обновление:

я использую этот метод CLEARN в JSON:

from pandas.io.json import json_normalize 
df1 = df['body'] 
df_final = json_normalize(df1['result'],'goodsList') 

Как я могу получить все ответ в только один dataframe?

+0

Ваш вопрос для меня очень неясен, пожалуйста, объясните подробнее – EdChum

ответ

0

Получение всех ответов на одной странице не представляется возможным. Это то, что вы не можете контролировать, и только человек, который сделал сайт, может контролировать.

Но, что вы можете сделать, это просмотреть страницы результата поиска и добавить их вместе. Я заметил, что у вас есть переменная hasMore, которая указывает, есть ли больше результатов поиска. Это дает что-то вроде этого:

import requests 

link = "http://sp.kaola.com/api/category/goods?pageSize=20&search=%7B%0A%20%20%22sortType%22%20%3A%20%7B%0A%20%20%20%20%22type%22%20%3A%200%0A%20%20%7D%2C%0A%20%20%22isNavigation%22%20%3A%20%220%22%2C%0A%20%20%22filterTypeList%22%20%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22id%22%20%3A%20%5B%0A%20%20%20%20%20%20%20%204055%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22type%22%20%3A%201%2C%0A%20%20%20%20%20%20%22category%22%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%22parentCategoryId%22%20%3A%200%2C%0A%20%20%20%20%20%20%20%20%22categoryId%22%20%3A%204055%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22source%22%20%3A%201%2C%0A%20%20%22noStoreCount%22%20%3A%200%2C%0A%20%20%22isActivity%22%20%3A%200%2C%0A%20%20%22storeCount%22%20%3A%2060%0A%7D" 
max_pages = 100 
data = {} 

for page_no in range(max_pages): 
    try: 
     req = reqeusts.get(link + "&pageNo=" + str(page_no)) 
    except reqeusts.ConnectionError: 
     break # Stop loop if the url was not found. 

    df = req.json() 
    if df["body"]["result"]["hasMore"] == 0: 
     break # Page says it has no more results 

    # Here, add whatever data you want to save from df to data 
+0

thx, как бороться с моим обновлением? для очистки json до dataframe –

+0

json, который вы получаете, очень запутанный - много данных, которые не находятся в табличном формате (какими являются такие кадры данных). Это зависит от того, какие данные вы хотите сохранить и какую структуру кадра данных вы хотите – AbdealiJK

Смежные вопросы