I've written a script in pythonPython using the multiprocessing
module to scrape certain fieldsvalues from a webpageweb pages (one page per subprocess). As I'm very new to write any script using multiprocessing
, I've barely any Idea as toI'm not sure whether I did everything in the right way. It works errorlessly though
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 (if there are rooms) will be highly appreciated.