Jestem bardzo (bardzo) nowy w Pythonie i staram się, aby moja pętla przeszła przez strony w żądaniu - wydaje się, że zwraca tylko pierwszą stronę wyników, więc mogę tylko pomyśleć, że przegapiłem istotną część kodu. .... oto co mam do tej pory:

Żądania importu

articles = []
for i in range(1, 6):
    response = requests.get(url=everything_news_url, headers=headers, params=everything_payload)
    headers = {'Authorization': 'xxxxxxxxxxxxxxxxxxxx'}
    everything_news_url = 'https://newsapi.org/v2/everything'
    everything_payload = {
        'q': 'cryptocurrency',
        'language': 'en',
        'sortBy': 'relevancy',
        'from_param': '2019-10-20',
        'to': '2019-11-11',
        'page': 'i'
    }
    headlines_payload = {'category': 'business', 'country': 'us'}
    sources_payload = {'category': 'general', 'country': 'us'}

articles.append(response)

Każda pomoc mile widziana ... brak błędów, tylko pierwsza strona wyników!

2
KellyC 20 listopad 2019, 20:23
Wygląda na to, że nie używasz i nigdzie, również, aby for działał, musisz zidentyfikować linie, na które ma to wpłynąć
 – 
João
20 listopad 2019, 20:26
'page': 'i' Myślę, że chciałeś, żeby to było 'page ' : i
 – 
João
20 listopad 2019, 20:28
Świetna opinia ... dziękuję wszystkim za pomoc!
 – 
KellyC
20 listopad 2019, 20:53

4 odpowiedzi

Nie wiem więcej niż podstawy Pythona, ale wydaje mi się, że jest to prosty błąd składniowy. Spróbuj wykonać następujące czynności:

articles = []
for i in range (1, 6):    
    response = requests.get(url=everything_news_url, 
    headers=headers,params=everything_payload)
    headers = {'Authorization': 'xxxxxxxxxxxxxxxxxxxx'}
    everything_news_url = 'https://newsapi.org/v2/everything'
    everything_payload = {'q': 'cryptocurrency', 'language': 'en', 'sortBy': 'relevancy', 
    'from_param' : '2019-10-20', 'to':'2019-11-11', 'page': 'i'}
    headlines_payload = {'category': 'business', 'country': 'us'}
    sources_payload = {'category': 'general', 'country': 'us'}
    articles.append(response)

Zasadniczo wygląda na to, że w opublikowanym kodzie dodawałeś do artykułów tylko jeden raz, ponieważ żaden z twoich kodów nie znajdował się w pętli for.

1
Basile Fengos 20 listopad 2019, 20:30

Zapomniałeś dodać wcięcia w kodzie do for, a także użyłeś i jako łańcucha, a także część z niego nie musiała znajdować się wewnątrz pętli.

headers = {'Authorization': 'xxxxxxxxxxxxxxxxxxxx'}
everything_news_url = 'https://newsapi.org/v2/everything'
headlines_payload = {'category': 'business', 'country': 'us'}
sources_payload = {'category': 'general', 'country': 'us'}
articles = []
for i in range (1, 6):              
  everything_payload = {'q': 'cryptocurrency', 'language': 'en', 'sortBy': 'relevancy',
  'from_param' : '2019-10-20', 'to':'2019-11-11', 'page': i }
  response = requests.get(url=everything_news_url,
                          headers=headers,
                          params=everything_payload)
articles.append(response)
2
João 20 listopad 2019, 20:58

Przede wszystkim Twój kod nie jest odpowiednio wcięty i zdefiniuj te zmienne przed użyciem ich w parametrze żądania.

import requests

articles = []
for i in range (1, 6):    

    headers = {'Authorization': 'you api key'}
    everything_news_url = 'https://newsapi.org/v2/everything'
    everything_payload = {'q': 'cryptocurrency', 'language': 'en', 'sortBy': 'relevancy', 
    'from_param' : '2019-10-20', 'to':'2019-11-11', 'page': 'i'}
    headlines_payload = {'category': 'business', 'country': 'us'}
    sources_payload = {'category': 'general', 'country': 'us'}
    response = requests.get(url=everything_news_url, 
    headers=headers,params=everything_payload)
    articles.append(response)

print(articles)
0
Manas Paul 20 listopad 2019, 20:45

Kod miał niewłaściwe wcięcie i był używany jako ciąg. Zmienne przekazywane jako parametry dla requests.get są definiowane po wywołaniu. Funkcjonalność pętli for nie jest obsługiwana, ponieważ instrukcja append znajduje się poza treścią pętli. Wielokrotne przypisywanie tych samych wartości zmiennym w pętli również nie jest eleganckie.

articles = []
headers = {'Authorization': 'xxxxxxxxxxxxxxxxxxxx'}
everything_news_url = 'https://newsapi.org/v2/everything'
headlines_payload = {'category': 'business', 'country': 'us'}
sources_payload = {'category': 'general', 'country': 'us'}

for i in range (1, 6):    
    everything_payload = {'q': 'cryptocurrency', 'language': 'en', 'sortBy': 'relevancy', 'from_param' : '2019-10-20', 'to':'2019-11-11', 'page': i}
    response = requests.get(url=everything_news_url, headers=headers,params=everything_payload)
    articles.append(response)
0
KVEER 20 listopad 2019, 20:45