I've written a script in Python using the multiprocessing
module to scrape values from web pages (one page per subprocess). As I'm very new to multiprocessing
, I'm not sure whether I did everything in the right way. It works without error, though.
Here goes the full script:
import requests
from lxml.html import fromstring
from multiprocessing import Pool
link = "https://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los%20Angeles%2C%20CA&page={}"
def create_links(url):
response = requests.get(url).text
tree = fromstring(response)
for title in tree.cssselect("div.info"):
name = title.cssselect("a.business-name span")[0].text
try:
street = title.cssselect("span.street-address")[0].text
except IndexError: street = ""
try:
phone = title.cssselect("div[class^=phones]")[0].text
except IndexError: phone = ""
print(name, street, phone)
if __name__ == '__main__':
links = [link.format(page) for page in range(1,4)]
with Pool(4) as p:
p.map(create_links, links)
Any idea to make it more robust will be highly appreciated.