Deselect Objects by Type with Python
I would suggest not to use bpy.ops and instead access the selection directly.

# assume you the active object is the parent
for obj in bpy.context.object.children:
    if obj.type != 'EMPTY':
        obj.select = True


This is a little more clever, you can do it recursively (to select children's children).

def select_children_recursive(obj_parent):
    for obj in obj_parent.children:
        select_children_recursive(obj)
        if obj.type != 'EMPTY':
            obj.select = True
# call the function
select_children_recursive(bpy.context.object)


Similar to above but caller can define types not to select

def select_children_recursive(obj_parent, type_mask):
    for obj in obj_parent.children:
        select_children_recursive(obj)
        if obj.type not in type_mask:
            obj.select = True
# call the function
select_children_recursive(bpy.context.object, {'EMPTY', 'LAMP'})