C# Post 数据形成
C# Post data to form
我以前使用 Selenium 来自动化 Web 进程。然而,它并不总是工作可靠,更重要的是,它取决于不一定总是相同的屏幕尺寸。
现在我有一个这样的表格(非常简单):
<form type="POST" name="demoform">
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
</form>
以前,我会搜索输入名称并输入数据。但现在我想用不同的方式来做到这一点。我想知道如何通过 POST 发送数据以及如何获取网页的整个 HTML 结果。此外,我想知道后者是否只是一个 HTML 响应,或者它是否是实际用户会看到的页面 HTML。
试试这个...
<form method="post" action="pagename" name="demoform">
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
<input type="submit" value="Submit" />
</form>
I previously used Selenium in order to automate web processes.
However, it doesn't always work reliable and more importantly, it is
dependent from the screen size
你并没有真正支持你关于可靠性的说法,但我不同意。我最近在一个使用 Selenium Chrome Driver 的项目上工作,没有遇到任何可靠性问题,也没有看到任何依赖于屏幕分辨率的问题?你一定做错了什么。无论如何,既然你想使用不同的技术,这里有一个关于你如何去做的快速信息:
Further I wonder if the latter is just a HTML response or if it's the
the page's HTML that actual users would see
由于您刚刚起步,您应该为自己配备一个 Web 调试工具,例如 Fiddler。它允许您拦截和操纵 Web 请求和响应。网上有很多关于如何使用 Fiddler 的免费教程,所以请找到一个并快速掌握它——它不会花很长时间,而且 Fiddler 是那种你离不开的工具。长 运行 在网络开发或抓取期间。
下一步是熟悉 HttpClient (.NET 4.5+, or WebClient 早期版本)。它允许您使用完全可定制的 objects 与网站进行通信。您几乎可以调整请求或响应的任何方面:headers、cookie、协议等(因此它们都与 Fiddler 一致)。 class 已经包含了很多逻辑,因此您可以专注于对您来说最重要的事情,即 沟通 。
I wonder how to send data via POST and how to get the entire HTML
result of the web page.
以下是使用 HttpClient
下载 html 字符串的方法:
public Task<string> GetHtmlAsync(string url)
{
try
{
var t = Task.Run(async () => {
using (var client = new HttpClient())
{
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
});
return t;
}
catch (HttpRequestException e)
{
return Task.FromException<string>(e);
}
}
它与 POST 非常相似,但这已经在 Whosebug 上得到了回答:How to make HTTP POST web request
我以前使用 Selenium 来自动化 Web 进程。然而,它并不总是工作可靠,更重要的是,它取决于不一定总是相同的屏幕尺寸。
现在我有一个这样的表格(非常简单):
<form type="POST" name="demoform">
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
</form>
以前,我会搜索输入名称并输入数据。但现在我想用不同的方式来做到这一点。我想知道如何通过 POST 发送数据以及如何获取网页的整个 HTML 结果。此外,我想知道后者是否只是一个 HTML 响应,或者它是否是实际用户会看到的页面 HTML。
试试这个...
<form method="post" action="pagename" name="demoform">
First name:<br>
<input type="text" name="firstname"><br>
Last name:<br>
<input type="text" name="lastname">
<input type="submit" value="Submit" />
</form>
I previously used Selenium in order to automate web processes. However, it doesn't always work reliable and more importantly, it is dependent from the screen size
你并没有真正支持你关于可靠性的说法,但我不同意。我最近在一个使用 Selenium Chrome Driver 的项目上工作,没有遇到任何可靠性问题,也没有看到任何依赖于屏幕分辨率的问题?你一定做错了什么。无论如何,既然你想使用不同的技术,这里有一个关于你如何去做的快速信息:
Further I wonder if the latter is just a HTML response or if it's the the page's HTML that actual users would see
由于您刚刚起步,您应该为自己配备一个 Web 调试工具,例如 Fiddler。它允许您拦截和操纵 Web 请求和响应。网上有很多关于如何使用 Fiddler 的免费教程,所以请找到一个并快速掌握它——它不会花很长时间,而且 Fiddler 是那种你离不开的工具。长 运行 在网络开发或抓取期间。
下一步是熟悉 HttpClient (.NET 4.5+, or WebClient 早期版本)。它允许您使用完全可定制的 objects 与网站进行通信。您几乎可以调整请求或响应的任何方面:headers、cookie、协议等(因此它们都与 Fiddler 一致)。 class 已经包含了很多逻辑,因此您可以专注于对您来说最重要的事情,即 沟通 。
I wonder how to send data via POST and how to get the entire HTML result of the web page.
以下是使用 HttpClient
下载 html 字符串的方法:
public Task<string> GetHtmlAsync(string url)
{
try
{
var t = Task.Run(async () => {
using (var client = new HttpClient())
{
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
});
return t;
}
catch (HttpRequestException e)
{
return Task.FromException<string>(e);
}
}
它与 POST 非常相似,但这已经在 Whosebug 上得到了回答:How to make HTTP POST web request