Vincent van Montfoort Vincent van Montfoort - 3 months ago 20
jQuery Question

selecting a radio button via url

I'm trying to build a scraper for a website: https://www.tenderned.nl/tenderned-web/aankondiging/overzicht/aankondigingenplatform

I use Scrapy, and I'm able to get the info off the page. To narrow my results, I want the spider to look only for active projects. A user does this by clicking the radio button: "Openstaande aanbestedingen".

I can't figure out what url to use, so that the results are already filtered by Open. I tried a few variations on this:
https://www.tenderned.nl/tenderned-web/aankondiging/overzicht/aankondigingenplatform#aankondigingenplatform:sluitings-datum:1

This does select the checkbox, but it doesnt check it.

Any ideas on how to actually check the radiobutton via URL? Thanks!

Answer

TLDR: Please try to recreate the POST request. But you can use javascript.

The filters are set in the POST body (not GET url queries as you tried) for example:

aankondigingenplatform:aankondigingenplatform
aankondigingenplatform:opdracht-diensten:on
aankondigingenplatform:opdracht-leveringen:on
aankondigingenplatform:opdracht-werken:on
aankondigingenplatform:publicatie-datum:1
aankondigingenplatform:publicatie-date-van:
aankondigingenplatform:publicatie-date-tot:
aankondigingenplatform:sluitings-datum:0
aankondigingenplatform:sluitings-date-van:23-08-2016
aankondigingenplatform:sluitings-date-tot:
aankondigingenplatform:nationaal:on
aankondigingenplatform:europees:on
aankondigingenplatform:publicatie-vooraankondiging:on
aankondigingenplatform:publicatie-aankondigingOpdracht:on
aankondigingenplatform:publicatie-aankondigingGegundeOpdracht:on
aankondigingenplatform:typeProcedure:org.jboss.seam.ui.NoSelectionConverter.noSelectionValue
aankondigingenplatform:nederlands:on
aankondigingenplatform:engels:on
javax.faces.ViewState:j_id1
aankondigingenplatform:j_id399:aankondigingenplatform:j_id399

To see this for yourself you can use Chrome and go to the network tab in your developer console.

To simulate mouseclicks selecting the radio button you can use javascript, anchor tags won't work. I would still suggest rebuilding the POST (try with Postman for Chrome for example).

javascript example with jQuery

$("#aankondigingenplatform:sluitings-datum:1").prop("checked", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="aankondigingenplatform:sluitings-datum" class="no-border marginBottom0">
    <tbody>
        <tr>
            <td>
                <input type="radio" checked="checked" name="aankondigingenplatform:sluitings-datum" id="aankondigingenplatform:sluitings-datum:0" value="0" onclick="A4J.AJAX.Submit('aankondigingenplatform',event,{'similarityGroupingId':'aankondigingenplatform:j_id453','parameters':{'aankondigingenplatform:j_id453':'aankondigingenplatform:j_id453'} ,'containerId':'aankondigingenplatform:j_id269','actionUrl':'/tenderned\x2Dweb/aankondiging/overzicht/aankondigingenplatform'} )">
                <label for="aankondigingenplatform:sluitings-datum:0" title=" Alle"> Alle</label>
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="aankondigingenplatform:sluitings-datum" id="aankondigingenplatform:sluitings-datum:1" value="1" onclick="A4J.AJAX.Submit('aankondigingenplatform',event,{'similarityGroupingId':'aankondigingenplatform:j_id453','parameters':{'aankondigingenplatform:j_id453':'aankondigingenplatform:j_id453'} ,'containerId':'aankondigingenplatform:j_id269','actionUrl':'/tenderned\x2Dweb/aankondiging/overzicht/aankondigingenplatform'} )">
                <label for="aankondigingenplatform:sluitings-datum:1" title=" Openstaande aanbestedingen"> Openstaande aanbestedingen</label>
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="aankondigingenplatform:sluitings-datum" id="aankondigingenplatform:sluitings-datum:2" value="2" onclick="A4J.AJAX.Submit('aankondigingenplatform',event,{'similarityGroupingId':'aankondigingenplatform:j_id453','parameters':{'aankondigingenplatform:j_id453':'aankondigingenplatform:j_id453'} ,'containerId':'aankondigingenplatform:j_id269','actionUrl':'/tenderned\x2Dweb/aankondiging/overzicht/aankondigingenplatform'} )">
                <label for="aankondigingenplatform:sluitings-datum:2" title=" Gesloten aanbestedingen"> Gesloten aanbestedingen</label>
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="aankondigingenplatform:sluitings-datum" id="aankondigingenplatform:sluitings-datum:3" value="3" onclick="A4J.AJAX.Submit('aankondigingenplatform',event,{'similarityGroupingId':'aankondigingenplatform:j_id453','parameters':{'aankondigingenplatform:j_id453':'aankondigingenplatform:j_id453'} ,'containerId':'aankondigingenplatform:j_id269','actionUrl':'/tenderned\x2Dweb/aankondiging/overzicht/aankondigingenplatform'} )">
                <label for="aankondigingenplatform:sluitings-datum:3" title=" Binnen 2 maanden"> Binnen 2 maanden</label>
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="aankondigingenplatform:sluitings-datum" id="aankondigingenplatform:sluitings-datum:4" value="4" onclick="A4J.AJAX.Submit('aankondigingenplatform',event,{'similarityGroupingId':'aankondigingenplatform:j_id453','parameters':{'aankondigingenplatform:j_id453':'aankondigingenplatform:j_id453'} ,'containerId':'aankondigingenplatform:j_id269','actionUrl':'/tenderned\x2Dweb/aankondiging/overzicht/aankondigingenplatform'} )">
                <label for="aankondigingenplatform:sluitings-datum:4" title=" Anders, namelijk:"> Anders, namelijk:</label>
            </td>
        </tr>
    </tbody>
</table>

Comments