First of all: the GIL doesn't apply to multi-processing, only to threading, and isn't as big a problem as people seem to make out it is. For one, when using any network or file I/O the lock is released, so anything that scrapes websites is not likely to see any performance bottlenecks on account of the GIL.
subprocess module is intended to call arbitrary processes from your program, basically anything you can run from the command line on the machine is fair game for this module.
multiprocessing module on the other hand, is intended to make distributing work across multiple python processes as easy as using threads for the same kind of work. It is the module you should be looking at if you want to implement distributed site scraping using multiple processes.
That said, why don't you take a look at Scrapy, instead:
Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.
Scrapy uses an event-driven loop approach instead of using multiple threads or processes to solve the 'network I/O is slow' problem. An event loop switches between different tasks in the program when network data (or any other I/O) is pending. Instead of waiting for network data to come in before continuing, an event loop switches to a different task instead while leaving it up to the OS to notify the program when the network data has arrived.
If Scrapy doesn't fit your specific needs, you can still make use of the same trick. Take a look at any of the following frameworks to help you do the same thing in your program:
twisted, if that makes any difference for you.