5

显然,完全是菜鸟。为了公开记录/政府透明度/报告/等,自学 Python 进行网络抓取。

我想抓取一个 .aspx 页面,2012 年 1 月至 2012 年 3 月的每周日历

但它没有形式...

也许你们这些优秀的人可以在我花几天时间与之抗争之前告诉我解决方案是否可行。

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

在日历上查看约会的唯一方法是在日历图片上选择一天。但是,至少,如果您单击星期一,它会显示该周的所有约会。(我想收集所有这些任命,以计算每个委员会开会的频率,有点代表计算什么样的立法受到关注和什么样的立法被忽视。)

但是,使用什么策略呢?似乎每个月至少在它的肠子里被分配给一个连续的四位数字,前面有一个“V”,比如 V4414,而天数则没有前面的数字。

我只在 2012 年 1 月 - 3 月狩猎;其他月份是非德国月份,大部分时间都是空的。

线索?

    ...<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> 

一种模式?

    ...<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>...

干杯和感谢!

4

2 回答 2

5

该表单包含四个inputs,其中names 为:

  • __EVENTTARGET
  • __EVENTARGUMENT
  • __VIEWSTATE
  • __EVENTVALIDATION

后两者具有初始值。你需要刮掉那些。前两个是由那些链接设置的。例如,您有一个链接:

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

看看href

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

不知何故,将这两个字符串解析出来。前者是__EVENTTARGET。后者是__EVENTARGUMENT

一旦您拥有所有四条数据,您就可以发出POST请求以获取下一页。

于 2012-05-04T03:25:08.080 回答
2

可以urllib.parse.urlencode使用类似构建查询字符串的方法在 Python 中复制 POST 请求。

为此,您显然必须找出查询字符串的样子。或者,您可以使用其他工具,例如Selenium RC

于 2012-05-04T03:17:34.100 回答