Apologies if you thought that was being rude; was just being honest with you.
In terms of new window's... DON'T! All it does is annoy users who don't want new windows. People want it in a new window they can ctrl-click or middle-click. There's a REASON "target" was deprecated as of HTML 4.01 Strict some sixteen years ago; it's usability trash... You don't shove new windows down the user's throat! They want a new window, let them do it -- don't force the choice on people.
Which is why the folks who started using JS a decade or so ago to do it as "target is invalid now" COMPLETELY MISSED THE POINT!
Of course, if you're vomiting up HTML 5, it's magically back in as they are bound and determined to drive web development back to the worst of 1997... just another strike against that idiotic halfwit nonsense and the people DUMB ENOUGH to see merit in it. See, that's being rude!
Whole bunch of redundancies and things we've been told for over a decade were bad practice magically re-appear and new redundancies and accessibility trash thrown in, because instead of trying to tell us how to write good websites, the W3C has shrugged, thrown it's hands in the air, and said "Oh well, go ahead and crap out sites any old way." and just started documenting what's supported instead of what we should be doing -- yeah, such an improvement and what a great way to write a specification.
Ok, I'll stop there before I start another 80 paragraph rant about what's wrong with 5.
As to DIV, nothing wrong with them in and of themselves when they serve a purpose; like when you've expended what you can do with the existing tags... but if you already HAVE existing tags, style those instead. With CSS there's not a whole lot you can do to a DIV you can't do to a tag inside it -- like those anchors. Whatever you are doing to those DIV, do it to the anchor.
Losing the DIV means less markup for faster page loads, smaller DOM for faster application of CSS and things like the various document.getElementsBytype functions, etc, etc...
DIV and SPAN are great for grouping like elements or application of style once you've used up your semantic markup -- that is why they shouldn't be added to your HTML until AFTER you've written your semantic markup and only when you NEED them.
I very much doubt you need them there... though admittedly that's a wild guess without seeing what you are doing for style. I mean you want block behavior, set the anchors to display:block; you want them floated, float them. You want them inline, set inline-block...
You might even be better off hitting the image tags with display:block and leaving the anchors inline and out-of-flow -- all hinges on how you're fitting them together.
Remember, using more CSS beats using more HTML every time so long as semantics isn't compromised, because CSS in an external stylesheet (where 99.99% of CSS belongs) can be cached.