Source code for scrapple.utils.form
"""
scrapple.utils.form
~~~~~~~~~~~~~~~~~~~
Functions related to form handling.
"""
import itertools
import json
import os
[docs]def form_to_json(form):
"""
Takes the form from the POST request in the web interface, and generates the JSON config\
file
:param form: The form from the POST request
:return: None
"""
config = dict()
if form['project_name'] == "":
raise Exception('Project name cannot be empty.')
if form['selector_type'] not in ["css", "xpath"]:
raise Exception('Selector type has to css or xpath')
config['project_name'] = form['project_name']
config['selector_type'] = form['selector_type']
config['scraping'] = dict()
if form['url'] == "":
raise Exception('URL cannot be empty')
config['scraping']['url'] = form['url']
config['scraping']['data'] = list()
for i in itertools.count(start=1):
try:
data = {
'field': form['field_' + str(i)],
'selector': form['selector_' + str(i)],
'attr': form['attribute_' + str(i)],
'default': form['default_' + str(i)]
}
config['scraping']['data'].append(data)
except KeyError:
break
# TODO : Crawler 'next' parameter handling
with open(os.path.join(os.getcwd(), form['project_name'] + '.json'), 'w') as f:
json.dump(config, f)
return