因此,在尝试使用Java和HttpClient之后,我决定转换到C#以尝试降低内存使用率,同时提高速度.我一直在阅读会员提供的关于异步与多线程的大量文章.似乎多线程将是更好的方向.
我的程序将访问服务器并反复发送相同的请求,直到检索到200个代码.原因是因为在高峰时段交通非常高.这使得服务器很难到达并引发5xx错误.代码非常简单,我不想添加循环来帮助简化观众.
我觉得我正朝着正确的方向前进,但我想与社区联系,以摆脱任何不良习惯.再次感谢您的阅读.
主持人请注意:我要求检查我的代码是否存在差异,我很清楚多线程HttpClient是可以的.
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Net.Http.Headers;
using System.Threading;
namespace MF
{
class MainClass
{
public static HttpClient client = new HttpClient();
static string url = "http://www.website.com";
public static void getSession() {
StringContent queryString = new StringContent("{json:here}");
// Send a request asynchronously continue when complete
var result = client.PostAsync(new Uri(url), queryString).Result;
// Check for success or throw exception
string resultContent = result.Content.ReadAsStringAsync().Result;
Console.WriteLine(resultContent);
}
public static void Run()
{
getSession ();
// Not yet implemented …Run Code Online (Sandbox Code Playgroud) 我有一个setInterval选择输入,然后通过单击操作提交表单。现在我的问题是我的函数点击按钮的次数太多了。我尝试添加一个布尔值来检查它是否已被点击。没有骰子,页面不会加载。由于某些奇怪的原因,提交按钮有时不起作用。我需要将间隔设为 100 - 1000,以防页面超时或滞后。
我如何检查以确保在页面尝试加载时它不会再次点击?如果间隔大于 1000,代码可以正常工作,但我需要速度。
var pickSize = setInterval(function(){
if (window.location.href.indexOf('/website/') == -1 && window.location.href.indexOf('/page.php') == -1) {
if ($('input[value="236"]').attr("checked", true)) {
$('.Add').click();
}
}
}, 1000);
Run Code Online (Sandbox Code Playgroud) 好吧,所以我在一个小泡菜.我遇到了JSoup的问题,因为页面需要Javascript才能完成加载某些页面.幸运的是,我过去曾经解决过这个问题(解析了原始的javascript代码),这非常繁琐.最近,我试图制作一个程序来登录网站,但它需要一个元素的令牌.除非执行JavaScript,否则该表单元素不可见,因此它甚至根本无法提取.所以我决定调查Selenium.
第一个问题,这是我应该研究的图书馆吗?我之所以如此倾向于使用HttpClient,是因为其中一些网站的流量非常高并且不会一直加载但我不需要这些页面一直加载.我只需要将它加载到我可以检索登录令牌的位置.一旦我发现所需的方法与让Selenium自动执行点击/等待/类型序列,我更喜欢使用原始JSON/POST方法与Web服务器通信.
基本上,我只需要selenium来加载页面的1/4,只是为了检索请求令牌.我的程序的其余部分将使用HttpClient发送POST方法.
或者我应该让selenium做所有的工作?我的目标是速度.我需要登录,快速购买物品.
编辑:实际上,我可能会使用HtmlUnit因为它非常小.我只需要抓取信息,而且我不想运行Selenium的StandAlone Server.这是更好的方法吗?