You can get the personalization from the renderings field.
If you open an item that contains personalization you will notice on the renderings field in Raw mode something like this:
<rls><ruleset><rule uid="{088B27BA-3E2E-4928-9F67-3951C7C0F112}" s:name="test"><conditions><condition uid="7B0698159A914755B99BE5A5D6A0786D" s:id="{8A9B001F-FB59-4F0F-B3F3-C6C5360ED451}" s:Now="20170728T180300Z" /></conditions><actions><action uid="239294CA205E4A0CBD648A3C07037E89" s:id="{25F351A1-712D-45F8-857D-8AD95BB2ACE9}" /></actions></rule><rule uid="{00000000-0000-0000-0000-000000000000}" s:name="Default"><conditions><condition uid="A33C959CAB4E4AC783FB25888B10A759" s:id="{4888ABBB-F17D-4485-B14B-842413F88732}" /></conditions><actions /></rule></ruleset></rls>
This is the personalization rules set on the field with an XML format.
So the first thing you need to do is loop and filter which renderings you want to check for personalization.
this will be something like this(haven't tested the code but should work)
Sitecore.Data.Fields.LayoutField layoutField = item.Fields["__renderings"];
Sitecore.Layouts.RenderingReference[] renderings = layoutField.GetReferences(Sitecore.Context.Device);
I'll add the remaining code shortly but this should point you to the right direction