2016-08-23 2 views
0

Я пытаюсь построить скребок для websiteвыбрать радиокнопку с помощью URL

я использую Scrapy, и я могу получить информацию от страницы. Чтобы сузить результаты, я хочу, чтобы паук выглядел только для активных проектов. Пользователь делает это, нажав на переключатель: «Openstaande aanbestedingen».

Я не могу понять, какой url использовать, чтобы результаты уже были отфильтрованы Open. Я пробовал несколько вариантов на this

Это делает флажок, но он не проверяет его.

Любые идеи о том, как на самом деле проверить радиообъект по URL-адресу? Благодаря!

ответ

0

TLDR: попробуйте восстановить запрос POST. Но вы можете использовать javascript.

Фильтры устанавливаются в POST тела (не GET URL-адреса запросов, как вы пробовали), например:

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 

Чтобы увидеть это для себя, вы можете использовать Chrome и перейдите на вкладку сети в вашем разработчика консоль.

Чтобы имитировать mouseclicks, выбрав радиокнопку, вы можете использовать javascript, метки привязки не будут работать. Я бы по-прежнему предлагал перестроить POST (например, с помощью Postman for Chrome).

Javascript пример с 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>

+0

Простите мое невежество, но это означает, что путь я подхожу это не будет работать вообще? –

+0

С помощью тега привязки вы переходите к аргументу id, но только с помощью javascript вы можете изменить выбранный переключатель в html, а не только с помощью меток привязки. Поскольку сетевая консоль показывает, что форма, используемая на странице, использует POST как метод HTTP, а не GET. Который использует тело POST для настроек. http://www.w3schools.com/tags/ref_httpmethods.asp –

+0

Понял, спасибо! –

Смежные вопросы