I think I've already just about wrapped this up. I would appreciate it if you would try the following pipeline on your data and let me know if I'm way off-base:
tr -s \[:blank:] ' ' <[login to view URL] |
sed -e:td -ettr -e/\\n/P \
-e's|<tr id="tr_Ad\([^"]*\)[^<]*|\n\1</td>|;D' \
-e:tr -e'\|<\/tr[^>]*>|!N;\||!btr' -e'y|\n| |' \
-e's||<td>\n|;s| *</td[^>]*> *<td[^>]*> *|\n\t|g'\
-e's|/\n|,|g;l;ttd'
My name is Mike. I am very good w/ pattern recognition and regular expression applications. My Unix/Linux Stack Exchange answer profile is found here: [login to view URL] I am proficient with shell script as well - my profile reflects this. While I can't claim it is universally representative, among the regular user base of that site I am in the point-zero-ninth percentile for reputation gain this fiscal quarter - and I only learn more with each problem I take on.
The little tr | sed pipeline above first squeezes all sequences of blanks to a single space, then sed deletes all lines which don't match '<tr id="_Ad'. Having matched the pattern, sed next buffers input lines until it matches '</tr'. Once it has pulled in an entire sequence, it flattens it by removing all newlines, and then replaces all matches for ' *</td[^>]*> *<td[^>*> *' with a newline then a tab. It's not yet a csv - I want you to see easily at a glance how it is delimited and hopefully clarify which bits to keep.