如何遍历页面请求?

时间:2019-11-20 17:23:30

标签: python

我对python非常(非常)陌生,正在努力让我的循环遍历请求中的页面-似乎只返回结果的第一页,所以我只能认为我错过了重要的部分代码.....这是我到目前为止的内容:

导入请求

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)

非常感谢任何帮助...没有错误显示,只有结果的第一页!

4 个答案:

答案 0 :(得分:1)

您忘记了将代码标识到for中,并且还使用了i作为字符串,而且其中的一些不需要放在循环中。

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)

答案 1 :(得分:1)

我对python的基础知识了解不多,但是在我看来,这是一个简单的语法错误。请尝试以下操作:

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)

基本上,在您发布的代码中,您似乎只是一次附加到文章,因为您的代码实际上都没有进入for循环。

答案 2 :(得分:0)

首先,您的代码没有正确缩进,并在请求的参数中使用它们之前定义这些变量。

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)

答案 3 :(得分:0)

代码缩进不正确,我被用作字符串。在调用之后定义作为requests.get的参数传递的变量。由于append语句不在循环主体之外,因此未提供for循环的功能。在循环中反复为变量分配相同的值也不是一件好事。

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)