Engine against non-perfect players Chess engines are built to find the best move with the assumption they are playing against a perfect player. My question is, is there an engine out there or would it be easy to create an engine that focuses more on winning quickly against weak human players.

For instance, maybe this engine notices that in a position, it capture a minor piece, but this would open up a 10 move tactic in which the opponent could win a rook. Perhaps this engine would risk capturing the piece and go for a quicker win under the assumption that the human player would not see the tactic.
Short answer: No such thing

Long answer: Contempt factor noted by @Tony is close but not exactly what you are looking for. It is a scaling constant for changing the evaluation score. It is a simple technique for avoiding early draws against apparently weaker opponents, or to prefer draws versus stronger opponents otherwise.

Other techniques that can influence the engine:


Run multi-pv analysis, and choose a move from the principal variations
Randomly add noise to the search
Slow down the engine
Fixed depth or fixed number of nodes
......


But they are still not what you are looking for, because chess engine always assume a perfect opponent. Why? That's because the alpha-beta framework always prune bad moves. The framework doesn't allow for dirty cheap tricks.

Let's think about it. It's actually not trivial to code an engine that makes dirty tricks. How does an engine know the tricky would work for a human player? Maybe it's just a gross blunder?

It's hard to to tell the engine:


When to swindle vs when to defend 
How a human player would fall into a trap
Stupid blunder vs great swindle