首页 > 解决方案 > “TypeError:'NoneType' 类型的参数不可迭代”当我尝试网络抓取时

问题描述

我试图通过过滤text包含关键字的关键字来抓取 Facebook 页面"Pecahan setiap negeri (Kumulatif)

虽然最初它可以工作,但现在我无法再次运行它。它向我展示了

  if wanted in post.get("text", ""):
TypeError: argument of type 'NoneType' is not iterable

首先,我以为我被 Facebook 禁止了,因为我一遍又一遍地循环。但是当我在没有if wanted in post.get("text") :它的情况下进行测试时工作正常,所以我认为这不是 Facebook 的错。

我该如何解决这个问题?为什么它首先起作用但现在不起作用?

我的代码:

from facebook_scraper import get_posts
listposts = []

wanted = "Pecahan setiap negeri (Kumulatif)"  # wanted post
for post in get_posts("myhealthkkm", pages=10):
    if wanted in post.get("text") :
        # print("Found", t)
        listposts.append(post)
    else:
        pass
        # print("Not found")
print(listposts)

标签: python

解决方案


for循环需要迭代才能运行,例如列表、字典range()等。

get_posts("myhealthkkm", pages=10)是传递给您唯一for循环的内容,因此此 FN 必须返回None- 这是不可迭代的。

你可以试试:

[...]
post_list = get_posts("myhealthkkm", pages=10)
print(type(post_list), post_list[:50])
for post in post_list:
  [...]

更新:由于get_posts()can的输出,在-loopNone之外添加一个条件以仅循环forif post_list is not None:


推荐阅读