FormRequest qui rend le contenu JS dans Scrapy Shell

Aug 24 2020

J'essaie de récupérer le contenu de cette page avec les données de formulaire suivantes:

J'ai besoin de l' County:ensemble pour Prince George's et je suis DateOfFilingFromprêt à 01-01-2000faire ce qui suit:

% scrapy shell
In [1]: from scrapy.http import FormRequest                                                                                                                                          

In [2]: request = FormRequest(url='https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx', formdata={'DateOfFilingFrom': '01-01-2000', 'County:': "Prince George's"})                             

In [3]: response                                                                                                                                                                     

In [4]:    

Mais cela ne fonctionne pas (la réponse est None) en plus, la page suivante ressemble à ce qui suit qui est chargé dynamiquement, j'ai besoin de savoir comment pouvoir accéder à chacun des liens indiqués ci-dessous avec l'inspection suivante (pour autant que je sache ceci peut être fait en utilisant Splashcependant, je ne sais pas comment combiner un SplashRequestdans un FormRequestet tout faire à partir de la scrapy shell à des fins de test. J'ai besoin de savoir ce que je fais de mal et comment rendre la page suivante (celle qui résultats de l' FormRequestillustration ci-dessous)

Réponses

2 WimHermans Aug 24 2020 at 10:10

Il manque quelques champs à la demande que vous envoyez, ce qui explique probablement pourquoi vous ne recevez pas de réponse. Les champs que vous remplissez ne correspondent pas non plus aux champs attendus dans la demande. Un bon moyen de gérer cela est d'utiliser scrapy from_response ( doc ), qui peut remplir certains champs pour vous déjà en fonction des informations du formulaire.

Pour ce site Web, les éléments suivants ont fonctionné pour moi (en utilisant une coque de scrapy):

>>> url = "https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx"
>>> fetch(url)
>>> from scrapy import FormRequest
>>> req = FormRequest.from_response(
...             response,
...             formxpath="//form[@id='form1']", # specify the form on the current page
...             formdata={
...               'cboCountyId': '16',  # the county you select is converted to a number
...               'DateOfFilingFrom': '01-01-2001',
...               'cboPartyType': 'Decedent',
...               'cmdSearch': 'Search'
...             },
...             clickdata={'type': 'submit'},
...       )
>>> fetch(req)