mirror of https://github.com/scrapy/scrapy.git
lint scrapy/http/request/*.py
This commit is contained in:
parent
ccae49813a
commit
4161a8c82c
|
|
@ -4,21 +4,18 @@ requests in Scrapy.
|
|||
|
||||
See documentation in docs/topics/request-response.rst
|
||||
"""
|
||||
|
||||
import copy
|
||||
|
||||
import six
|
||||
from w3lib.url import safe_url_string
|
||||
|
||||
from scrapy.http.headers import Headers
|
||||
from scrapy.utils.trackref import object_ref
|
||||
from scrapy.utils.decorator import deprecated
|
||||
from scrapy.utils.url import escape_ajax
|
||||
from scrapy.http.common import obsolete_setter
|
||||
|
||||
|
||||
class Request(object_ref):
|
||||
|
||||
def __init__(self, url, callback=None, method='GET', headers=None, body=None,
|
||||
def __init__(self, url, callback=None, method='GET', headers=None, body=None,
|
||||
cookies=None, meta=None, encoding='utf-8', priority=0,
|
||||
dont_filter=False, errback=None):
|
||||
|
||||
|
|
@ -54,7 +51,7 @@ class Request(object_ref):
|
|||
elif isinstance(url, six.text_type):
|
||||
if self.encoding is None:
|
||||
raise TypeError('Cannot convert unicode url - %s has no encoding' %
|
||||
type(self).__name__)
|
||||
type(self).__name__)
|
||||
self._set_url(url.encode(self.encoding))
|
||||
else:
|
||||
raise TypeError('Request url must be str or unicode, got %s:' % type(url).__name__)
|
||||
|
|
@ -72,7 +69,7 @@ class Request(object_ref):
|
|||
elif isinstance(body, six.text_type):
|
||||
if self.encoding is None:
|
||||
raise TypeError('Cannot convert unicode body - %s has no encoding' %
|
||||
type(self).__name__)
|
||||
type(self).__name__)
|
||||
self._body = body.encode(self.encoding)
|
||||
elif body is None:
|
||||
self._body = ''
|
||||
|
|
@ -98,8 +95,8 @@ class Request(object_ref):
|
|||
"""Create a new Request with the same attributes except for those
|
||||
given new values.
|
||||
"""
|
||||
for x in ['url', 'method', 'headers', 'body', 'cookies', 'meta', \
|
||||
'encoding', 'priority', 'dont_filter', 'callback', 'errback']:
|
||||
for x in ['url', 'method', 'headers', 'body', 'cookies', 'meta',
|
||||
'encoding', 'priority', 'dont_filter', 'callback', 'errback']:
|
||||
kwargs.setdefault(x, getattr(self, x))
|
||||
cls = kwargs.pop('cls', self.__class__)
|
||||
return cls(*args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -41,17 +41,20 @@ class FormRequest(Request):
|
|||
method = kwargs.pop('method', form.method)
|
||||
return cls(url=url, method=method, formdata=formdata, **kwargs)
|
||||
|
||||
|
||||
def _get_form_url(form, url):
|
||||
if url is None:
|
||||
return form.action or form.base_url
|
||||
return urljoin(form.base_url, url)
|
||||
|
||||
|
||||
def _urlencode(seq, enc):
|
||||
values = [(unicode_to_str(k, enc), unicode_to_str(v, enc))
|
||||
for k, vs in seq
|
||||
for v in (vs if hasattr(vs, '__iter__') else [vs])]
|
||||
return urllib.urlencode(values, doseq=1)
|
||||
|
||||
|
||||
def _get_form(response, formname, formnumber, formxpath):
|
||||
"""Find the form element """
|
||||
from scrapy.selector.lxmldocument import LxmlDocument
|
||||
|
|
@ -85,10 +88,11 @@ def _get_form(response, formname, formnumber, formxpath):
|
|||
form = forms[formnumber]
|
||||
except IndexError:
|
||||
raise IndexError("Form number %d not found in %s" %
|
||||
(formnumber, response))
|
||||
(formnumber, response))
|
||||
else:
|
||||
return form
|
||||
|
||||
|
||||
def _get_inputs(form, formdata, dont_click, clickdata, response):
|
||||
try:
|
||||
formdata = dict(formdata or ())
|
||||
|
|
@ -99,8 +103,8 @@ def _get_inputs(form, formdata, dont_click, clickdata, response):
|
|||
'|descendant::select'
|
||||
'|descendant::input[@type!="submit" and @type!="image" and @type!="reset"'
|
||||
'and ((@type!="checkbox" and @type!="radio") or @checked)]')
|
||||
values = [(k, u'' if v is None else v) \
|
||||
for k, v in (_value(e) for e in inputs) \
|
||||
values = [(k, u'' if v is None else v)
|
||||
for k, v in (_value(e) for e in inputs)
|
||||
if k and k not in formdata]
|
||||
|
||||
if not dont_click:
|
||||
|
|
@ -111,6 +115,7 @@ def _get_inputs(form, formdata, dont_click, clickdata, response):
|
|||
values.extend(formdata.items())
|
||||
return values
|
||||
|
||||
|
||||
def _value(ele):
|
||||
n = ele.name
|
||||
v = ele.value
|
||||
|
|
@ -118,6 +123,7 @@ def _value(ele):
|
|||
return _select_value(ele, n, v)
|
||||
return n, v
|
||||
|
||||
|
||||
def _select_value(ele, n, v):
|
||||
multiple = ele.multiple
|
||||
if v is None and not multiple:
|
||||
|
|
|
|||
Loading…
Reference in New Issue