1

对于那些熟悉图像板的人来说,OP 帖子可能包含也可能不包含“主题”和“评论”

我写这篇文章是为了在给定板的所有页面上搜索线程主题和 OP 帖子。

如果我的搜索词存在于其中一个上,但另一个键不存在,它将不会被附加到我的 res 列表中。

那么如何搜索 json 键,其中 1 个键或另一个键可能不存在?

import urllib, json, HTMLParser

def s4Chan(board, search):
  logo = '3::54chan'
  res = []
  p = HTMLParser.HTMLParser()

  catalog = json.load(urllib.urlopen('https://api.4chan.org/%s/catalog.json' % board))

  for i in catalog:
    for j in i['threads']:
      try:
        if search.lower() in j['sub'].lower() or search.lower() in j['com'].lower():
          subject = j['sub']
          post = p.unescape(str(j['com'])).replace('<br>', ' ')

          if len(post) > 300:
            post = post[0:300]
            post = post + '...'

          text = str('%s /%s/ %s | %s | %s (R:%s, I:%s)' % (logo, board, subject, post, 'https://4chan.org/%s/res/%s' % (board, j['no']), j['replies'], j['images']))
          res.append(text)

      except(KeyError):
        continue
  return res
4

1 回答 1

0

json.load将对象作为 Python 字典返回。例如,您可以使用以下get方法dict

if search.lower() in j.get('sub', '').lower() or search.lower() in j.get('com', '').lower():
于 2013-10-16T09:38:59.663 回答