小编use*_*247的帖子

如何快速抓取XML - 考虑到以下网络限制?

我有一个.Net爬虫在用户发出请求时运行(因此,它需要很快).它实时抓取400多个链接.(这是业务问题.)

问题:我需要检测链接是否是xml(想想rss或atom feed)或html.如果链接是xml然后我继续处理,但如果链接是html我可以跳过它.通常,我有2 xml(s)和398+ html(s).目前,我有多个线程,但处理仍然很慢,通常75秒运行,10个线程用于400多个链接,或280秒运行1个线程.(我想添加更多线程,但请参见下文..)

我面临的挑战是我如下阅读流:

var request = WebRequest.Create(requestUriString: uri.AbsoluteUri);
// ....
var response = await request.GetResponseAsync();
//....
using (var reader = new StreamReader(stream: response.GetResponseStream(), encoding: encoding)) {
                        char[] buffer = new char[1024];
                        await reader.ReadAsync(buffer: buffer, index: 0, count: 1024);
                        responseText = new string(value: buffer);
}
// parse first byts of reasponseText to check if xml 
Run Code Online (Sandbox Code Playgroud)

问题是我的优化只获得1024是没用的,因为GetResponseAsync正在下载整个流,无论如何,正如我所看到的.(我的另一个选择是查找标题ContentType,但这是非常相似的AFAIK,因为我还是得到了内容 - 如果你不建议使用OPTIONS,我到目前为止没用 - 另外xml可能是内容类型错误标记(?),我将错过一些内容.)

如果有任何我失踪的优化请帮助,因为我的想法已经用完了.

(我的确考虑通过在多个服务器上分散负载来优化这种设计,这样我就可以平衡网络与并行性,但这与目前的体系结构有一些变化,我现在无法负担这一点.)

c# web-crawler asp.net-core

6
推荐指数
1
解决办法
83
查看次数

需要帮助使[create-react-app]使用Aync - Await(transform-async-to-generator)!

我是[create-react-app]的新手,我想知道如何添加:["transform-async-to-generator"]到这个构建过程?在常规情况下,我会将它添加到.babelrc中,但不会在[create-react-app]中使用*.

*通过"看起来不工作" - 我看到以下错误.

Syntax error: ../web/src/App.js: Unexpected token, expected ( (17:13)

  15 |   }
  16 |
> 17 |   test = async () => {
     |              ^
  18 |     let x = await this.resolveAfter2Seconds();
  19 |     try{}
  20 |     catch(exception){
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以扩展[create-react-app],而无需修改包本身?

谢谢!

reactjs webpack babeljs create-react-app

3
推荐指数
1
解决办法
1371
查看次数