mirror of
https://github.com/scrapy/scrapy.git
synced 2025-03-03 10:31:37 +00:00
Update form.py to improve existing capability
Add capability to search HTML Form using formid when using `FormRequest.from_response()` refrenced issue :https://github.com/scrapy/scrapy/issues/1136
This commit is contained in:
parent
9706119336
commit
5a96a16914
@ -31,10 +31,10 @@ class FormRequest(Request):
|
|||||||
self._set_url(self.url + ('&' if '?' in self.url else '?') + querystr)
|
self._set_url(self.url + ('&' if '?' in self.url else '?') + querystr)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_response(cls, response, formname=None, formnumber=0, formdata=None,
|
def from_response(cls, response, formname=None, formid=None, formnumber=0, formdata=None,
|
||||||
clickdata=None, dont_click=False, formxpath=None, **kwargs):
|
clickdata=None, dont_click=False, formxpath=None, **kwargs):
|
||||||
kwargs.setdefault('encoding', response.encoding)
|
kwargs.setdefault('encoding', response.encoding)
|
||||||
form = _get_form(response, formname, formnumber, formxpath)
|
form = _get_form(response, formname, formid, formnumber, formxpath)
|
||||||
formdata = _get_inputs(form, formdata, dont_click, clickdata, response)
|
formdata = _get_inputs(form, formdata, dont_click, clickdata, response)
|
||||||
url = _get_form_url(form, kwargs.pop('url', None))
|
url = _get_form_url(form, kwargs.pop('url', None))
|
||||||
method = kwargs.pop('method', form.method)
|
method = kwargs.pop('method', form.method)
|
||||||
@ -67,6 +67,11 @@ def _get_form(response, formname, formnumber, formxpath):
|
|||||||
if f:
|
if f:
|
||||||
return f[0]
|
return f[0]
|
||||||
|
|
||||||
|
if formid is not None:
|
||||||
|
f = root.xpath('//form[@id="%s"]' % formid)
|
||||||
|
if f:
|
||||||
|
return f[0]
|
||||||
|
|
||||||
# Get form element from xpath, if not found, go up
|
# Get form element from xpath, if not found, go up
|
||||||
if formxpath is not None:
|
if formxpath is not None:
|
||||||
nodes = root.xpath(formxpath)
|
nodes = root.xpath(formxpath)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user