2012-05-04 12 views
5

Total noob, oczywiście. Nauczanie własnego Pythona do skriningu w sieci w interesie otwartych rekordów/przejrzystości rządowej/raportowania/etc.Python/web scrape/aspx - czy jest to możliwe z ludzkiego punktu widzenia, gdy nie ma formularzy?

Tam jest strona aspx Chcę zeskrobać, kalendarz tydzień-po-tygodniu za styczeń - marzec 2012

Ale to nie ma formy ...

Może drobne ludzie mogą powiedzieć, czy Rozwiązanie jest nawet możliwe, zanim spędzę z nim kilka dni.

http://webmail.legis.ga.gov/Calendar/default.aspx?chamber=house

Jedynym sposobem, aby zobaczyć terminy w kalendarzu jest poprzez wybór dnia na obraz z kalendarza. Przynajmniej, jeśli klikniesz w poniedziałek, wyświetlone zostaną wszystkie spotkania w tygodniu. (Chciałbym zebrać wszystkie te nominacje, aby policzyć, ile razy spotykają się poszczególne komitety, trochę proxy do liczenia, jakiego rodzaju prawodawstwo zwraca uwagę, i jakiego rodzaju jest ono ignorowane.)

Ale jaka strategia powinna być stosowana? ? Wydaje się, że co najmniej co najmniej w jego trzewiach jest przypisany do sekwencyjnej czterocyfrowej liczby poprzedzonej "V", jak V4414, i dni z nieprzypisanym numerem.

Jestem tylko polowanie od stycznia do marca 2012; pozostałe miesiące są nieistotne i w większości puste.

wskazówka?

...<a href="javascript:__doPostBack('calMain','V4414')" style="color:#333333" title="Go to the previous month">February</a></td><td align="center" style="width:70%;">March 2012</td><td align="right" valign="bottom" style="color:#333333;font-size:8pt;font-weight:bold;width:15%;"><a href="javascript:__doPostBack('calMain','V4474')" style="color:#333333" title="Go to the next month">April</a></td></tr> 

wzór?

...<td align="center" style="color:#999999;width:14%;"><a  href="javascript:__doPostBack('calMain','4439')" style="color:#999999" title="February 26">26</a></td><td align="center" style="color:#999999;width:14%;"><a href="javascript:__doPostBack('calMain','4440')" style="color:#999999" title="February 27">27</a></td><td align="center" style="color:#999999;width:14%;"><a href="javascript:__doPostBack('calMain','4441')" style="color:#999999" title="February 28">28</a></td>... 

Pozdrowienia i dzięki!

+0

ma element 'form'. –

Odpowiedz

2

Możesz może replikować żądanie POST w Python za pomocą czegoś jak urllib.parse.urlencode, aby zbudować ciągi zapytania.

W tym przypadku będziesz musiał dowiedzieć się, jak wygląda łańcuch zapytania. Lub możesz użyć innego narzędzia, takiego jak Selenium RC.

5

Formularz zawiera cztery input sz name s o:

  • __EVENTTARGET
  • __EVENTARGUMENT
  • __VIEWSTATE
  • __EVENTVALIDATION

ostatnie dwa mają wartości początkowe. Musisz je zeskrobać. Te pierwsze dwa są ustawione przez te linki. Na przykład, masz link:

<a href="javascript:__doPostBack('calMain','4504')" style="color:Black" title="May 01">1</a> 

Spójrz na href:

javascript:__doPostBack('calMain','4504') 

Jakoś analizować te dwa ciągi z niego. Pierwsza z nich to __EVENTTARGET. Ta ostatnia to __EVENTARGUMENT.

Po uzyskaniu wszystkich czterech danych można wydać prośbę o przesłanie następnej strony z numerem POST.

+0

Dzięki wam! Opublikuję link tutaj, gdy praca zostanie zakończona. Wiem, że to będzie fascynujące, lolz. – greencracker

+0

To było niesamowite, dzięki! – Lazik

Powiązane problemy