我正在尝试以编程方式处理网站。假设我访问了www.example.com/something
页面。在网站上有一个我按下的按钮。按钮的代码如下所示:
<form action="/something" method="POST" enctype="text/plain">
<input type="submit" class="button" value="Click me" >
</form>
按此按钮可更新网站上的信息。
现在我想以编程方式执行此过程,以便在按下按钮后接收更新网站的内容。
有人可以引导我找到如何做到这一点的正确方向吗?最好是在C#中。
提前谢谢!
修改:
我使用Fiddler来捕获HTTP请求和响应,它看起来像这样:
POST /something HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://example.com/something
Cookie: cookie1=cookiecontent; cookie2=cookiecontent
Connection: keep-alive
Content-Type: text/plain
Content-Length: 0
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 05 Dec 2013 23:36:31 GMT
Content-Length: 2202
虽然请求包含cookie,但它们似乎并不相关。我用fiddler解压缩收到的内容,发现想要的数据包含在响应中。
我对HTTP请求不是很有经验,因此希望有人可以帮助我将其转换为C#http请求以接收内容。
答案 0 :(得分:1)
由于它是一个提交按钮,因此模拟生成的HTTP请求比模拟点击更容易。首先,我会使用像Fiddler之类的程序来检查提交表单时发送的内容。然后我会复制该请求,只需使用HTTPWebRequest更改我需要更改的值。您可以找到示例here。
然后可以解析生成的HTTPWebResponse以获取数据。使用HtmlAgilityPack之类的东西可以使这部分更容易。
答案 1 :(得分:1)
如果有问题的网站是开放的,并且没有进行任何类型的cookie生成来验证请求(有很多这样的网站)那么您可以使用System.Net.WebRequest
或类似的方式发布所需的表单数据,然后检查响应。有关示例,请参阅this MSDN页。
如果页面 使用Cookie等,则必须更具创意。在某些情况下,您可以发出一个Web请求来获取第一页,检查Cookie和隐藏表单值的结果,并在POST中使用它们。
如果所有其他方法都失败,那么Selenium WebDriver库将为您提供几乎完整的浏览器模拟,并且可以完全访问DOM。它比使用WebRequest
稍微复杂一点,但几乎可以用于使用Web浏览器的所有内容。
无论使用哪种方法,Fiddler都是一个很好的调试工具。使用它来比较您的C#代码正在做什么以及Web浏览器正在做什么,以查看您的代码是否正常运行。
答案 2 :(得分:0)
您可以使用http://www.seleniumhq.org/projects/webdriver/执行所需操作。可以在控制台程序中使用c#进行Web自动化。我正在使用它进行ui集成测试,它运行得相当不错
答案 3 :(得分:0)
我会研究搜索浏览器自动化框架。我通常会在Python中执行此操作并且没有使用.Net,但快速的Google搜索会产生相当多的结果。
包括在内: