国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python通過正則表達式選取callback的方法

2019-11-25 17:09:55
字體:
來源:轉載
供稿:網友

本文實例講述了Python通過正則表達式選取callback的方法。分享給大家供大家參考。具體如下:

最近在瞎想怎么通過xpath去精確抓取文章的正文,跟parselets類似的想法,只不過更簡單。

代碼設計上采用正則表達式匹配URL,再選擇callback handler的方式,主要參考web.py的分發器(Dispatcher)。

當然,這個實現比較老土一些,全部用function的方式回調,沒有用類。

#!/bin/env pythonimport re, sys# Define parser first.def baidu(username):  # Business logic  return "Using parser Baidu. and the user's name is: %s." % usernamedef qzone(uin):  # Business logic  return "Using parser Qzone, and the user's QQ is: %s." % uin# From web.pydef group(seq, size):#{{{  """  Returns an iterator over a series of lists of length size from iterable.    >>> list(group([1,2,3,4], 2))    [[1, 2], [3, 4]]    >>> list(group([1,2,3,4,5], 2))    [[1, 2], [3, 4], [5]]  """  def take(seq, n):    for i in xrange(n):      yield seq.next()  if not hasattr(seq, 'next'):    seq = iter(seq)  while True:    x = list(take(seq, size))    if x:      yield x    else:      break#}}}def parser_init(url,mapping):  for pat, what in group(mapping,2):    result = re.compile('^' + pat + '$').match(url)    if result:      return what, [x for x in result.groups()]  return None, Noneif __name__ == '__main__':  mapping = (      'http://(?:hi|space).baidu.com/([^/]+)(?:/.*)?','baidu',      'http://(/d+).qzone.qq.com(?:/.*)?','qzone',      )  (func, args) = parser_init(sys.argv[1],mapping)  if func:    callback = func    if func in globals():      callback = globals()[func]    if callable(callback):      print callback(*args)  else:    print 'No parser found.';

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海阳市| 普定县| 新安县| 南投市| 贵南县| 油尖旺区| 高密市| 南康市| 石河子市| 綦江县| 巴中市| 彝良县| 岑溪市| 宁都县| 福鼎市| 甘孜| 京山县| 信阳市| 宁夏| 习水县| 武城县| 邳州市| 麻江县| 正镶白旗| 特克斯县| 莒南县| 武清区| 涿鹿县| 曲水县| 虹口区| 扬州市| 昌图县| 蒙自县| 桂林市| 黄浦区| 辉南县| 新竹县| 彭泽县| 平潭县| 连山| 桃源县|