Another alternative, if you have the time, is to take the train. "Soft sleeper" overnight trains between PEK and PVG take about 9 hours and cost about $50. You get a comfortable ride in a 4-person cabin with a decent bed and a private TV with headphones. The bathroom situation is lousy, but it's better than that on most trains. And you avoid having to travel to the two airports, both of which are fairly far from downtown.