【问题标题】:for loop only incrementing in range of 10 instead of 1for 循环仅在 10 而不是 1 的范围内递增
【发布时间】:2022-01-08 16:56:23
【问题描述】:

我正在尝试从使用谷歌新闻的搜索中返回一个 URL 列表。我正在使用 GoogleNews 和 pandas 数据框模块来组织结果。然后我使用 pywebcopy 获取这些 URL 并下载网页。

现在,我的 for 循环每次增加 9 个而不是 1 个,我认为这是使用 save_webpage 函数下载网页时的问题。我相信 save_webpage 函数一次只能处理 1 个 URL。我不知道如何缩短返回结果的范围。

我尝试过调整范围,但 (1,1) 似乎是它可以达到的最低值,并且总是返回 9 个 URL 而不是 1。

这是我的代码:

from GoogleNews import GoogleNews
from newspaper import Article
import pandas as pd

googlenews=GoogleNews(start = '12/01/2021',end= '12/31/2021')
googlenews.search('test search')
result=googlenews.result()
df=pd.DataFrame(result)

for i in range(1,1):
    googlenews.getpage(i)
    result=googlenews.result()
    df=pd.DataFrame(result)
list = []

for ind in df.index:
    try:
        dict={}
        article = Article(df['link'][ind])
        article.download()
        article.parse()
        dict['Article Title'] = article.title
        dict['Article Text'] = article.text

        url = str(df['link'])
        print(str(url))

        download_folder = 'C:\Test_Data'

        kwargs = {'bypass_robots': True, 'project_name': 'PROJECT'}

        save_webpage(url, download_folder, **kwargs)
        list.append(dict)
    except:
        pass

【问题讨论】:

  • range(start, stop, step) -> 你想用range(1, 1)达到什么目的?
  • for loop increments in groups of 9 instead of 1 at a time 哪一个?有两个 for 循环。
  • 如果你不接受try: ... except: pass 的所有异常会发生什么?
  • @Mr.T - 我正在尝试从结果变量的结果中获取 1 个 URL。我明白你在说什么,这让我对事情有了不同的看法。
  • @NickODell 它发生在第一个 for 循环中。我的范围(1,1)逻辑似乎有问题。很抱歉没有澄清这一点。

标签: python python-3.x pandas pygooglenews


【解决方案1】:

我已经尝试调整范围,但 (1,1) 似乎是它可以达到的最低值,并且总是返回 9 个 URL 而不是 1。

如果你写下面的循环,你实际上会得到一个执行 0 次的循环:

for i in range(1,1):
    print("Looping at index " + str(i))

如果你运行它,它不会打印任何东西,因为它循环了 0 次。计算循环将循环多少次的捷径是从结尾减去开头。所以,例如这循环 1 次,因为 2 - 1 = 1:

for i in range(1,2):
    print("Looping at index " + str(i))

那么,为什么要返回 10 个结果? GoogleNews 库旨在一次获取一“页”结果。此行获取一页:

result=googlenews.result()
df=pd.DataFrame(result)

由于该行在循环之外,即使循环没有运行,该行仍然执行。

要解决此问题,我建议循环访问结果页面,并在每篇文章中调用一次 save_webpage()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 2021-11-03
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多