1

我正在做一个网络抓取工具,它将根据给定的开始和结束日期自动从站点中提取数据。这些日期实际上是一个选择器(但不确定它是 Js 选择器还是其他东西)。更改这些日期后,我已应用更改按钮,单击此按钮后,将加载网格。

![datepicker 控件][1] 我正在使用带有 C# 的 .net windows 应用程序。在表单中,我有网络浏览器控制。我正在通过 HtmlElement 类对象检索站点数据。有了这个,我可以使用 setattribute 选项以编程方式更改开始和结束日期文本框。但是当我在更改日期后聚焦时,它会显示当前日期(选择器中没有反映)。下面附上我的代码:

HtmlElement startdate = webBrowser1.Document.GetElementById("ctl00_txtStartDate_dateInput_text"); 

if (startdate != null)
{
startdate.SetAttribute("Value", DateTime.Today.AddDays(-1).ToString("M/dd/yyyy"));

}
![Selecting a date][2]

当我查看源页面时,有一个隐藏的输入标签,如果我手动更改日期,它实际上会得到反映。我什至更改了隐藏输入标签的值。但没有运气。下面附上了在源页面中找到的隐藏输入标签:

  <input type="hidden" name="ctl00_txtStartDate_calendar_SD" id="ctl00_txtStartDate_calendar_SD" value="[[2013,3,19]]">
<input type="hidden" name="ctl00_txtStartDate_calendar_AD" id="ctl00_txtStartDate_calendar_AD" value="[[1980,1,1],[2099,12,30],[2013,3,1]]">
But actual date textbox control source tag is this:
<input type="text" value="3/12/2013" id="ctl00_txtStartDate_dateInput_text" name="ctl00_txtStartDate_dateInput_text" class="riTextBox riEnabled" style="width:65px;" maxlength="524288">

注意:如果我更改该选择器中的日期,即使这个实际输入值也不会反映任何变化。

请帮忙!

4

1 回答 1

0

当您单击表单上的按钮时,使用浏览器的调试器查看 HTTP 请求中实际发送的内容。这会给你一个提示你做错了什么。

请参阅此处的步骤 2、3、4:http: //brannockdevice.blogspot.com/2008/11/using-wget-for-screen-scraping-html.html

于 2014-01-08T18:45:00.820 回答