It is possible to download games from chess.com, otherwise services like Opening Tree would not work.
Chess.com has published it's data API.
It includes endpoints for downloading games in PGN format.
You can access this API programmatically, including Python. It is possible that you have to download multiple games from a player in a batch and then filter the game you're interested in (e.g, using the game URL/game ID, see data format below).
The data format for games that are returned by this API is
{
"white": { // details of the white-piece player:
"username": "string", // the username
"rating": 1492, // the player's rating after the game finished
"result": "string", // see "Game results codes" section
"@id": "string" // URL of this player's profile
},
"black": { // details of the black-piece player:
"username": "string", // the username
"rating": 1942, // the player's rating after the game finished
"result": "string", // see "Game results codes" section
"@id": "string" // URL of this player's profile
},
"accuracies": { // player's accuracies, if they were previously calculated
"white": float,
"black": float
},
"url": "string", // URL of this game
"fen": "string", // final FEN
"pgn": "string", // final PGN
"start_time": 1254438881, // timestamp of the game start (Daily Chess only)
"end_time": 1254670734, // timestamp of the game end
"time_control": "string", // PGN-compliant time control
"rules": "string", // game variant information (e.g., "chess960")
"eco": "string", //URL pointing to ECO opening (if available),
"tournament": "string", //URL pointing to tournament (if available),
"match": "string", //URL pointing to team match (if available)
}