.net HttpCrawler
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks; namespace HttpCrawler
{
class Program
{
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
var titles = from row in GetHtml("http://bbs.csdn.net/forums/DotNET/").DocumentNode.SelectSingleNode("//table[@class='table_list parent_forum ']").Elements("tr").Skip(1)
let td = row.Element("td")
where td != null
let a = td.Descendants("a").FirstOrDefault()
where a != null
select new
{
href = a.Attributes["href"].Value,
text = a.InnerText
};
var pages = from t in titles
.AsParallel().WithDegreeOfParallelism(20)
where t.href != null
let path = "http://bbs.csdn.net" + t.href
let subQuery = from nick in GetHtml(path).DocumentNode.SelectNodes("//span[@class='name2nick']")
where nick.InnerText == "sp1234"
select nick
where subQuery.Any()
select new
{
title = t.text,
href = path
};
var results = pages.ToList();
sw.Stop();
Console.WriteLine("不加并发的时间:"+sw.ElapsedMilliseconds);
Console.ReadKey();
}
static HtmlDocument GetHtml(string url)
{
var content = Encoding.UTF8.GetString(new WebClient().DownloadData(url));
var doc = new HtmlDocument();
doc.Load(new StringReader(content));
return doc;
}
}
}
.net HttpCrawler的更多相关文章
- Python分布式爬虫原理
转载 permike 原文 Python分布式爬虫原理 首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的. (1)打开浏览器,输入URL,打开源网页 (2)选取我们想要的内容,包括标题,作 ...
- urllib2.URLError: <urlopen error [Errno 104] Connection reset by peer>
http://www.dianping.com/shop/8010173 File "综合商场1.py", line 152, in <module> httpC ...
- china-pub
#!/usr/bin/env python #coding:utf-8import urllib2,re,sys,os,types ...
- jd.py
#!/usr/bin/env python #coding:utf-8 import urllib2,re,sys,os,types #from bs4 import BeautifulSoup re ...
- 大数据抓取采集框架(摘抄至http://blog.jobbole.com/46673/)
摘抄至http://blog.jobbole.com/46673/ 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如 ...
- shops
#!/usr/bin/env python #coding:utf- import urllib2,sys,re,os,string reload(sys); sys.setdefaultencodi ...
随机推荐
- cookie属性和作用
面试面到了cookie,自己只是还是有一点欠缺,找到一篇文章,学习一下 在chrome控制台中的resources选项卡中可以看到cookie的信息. 现在的chrome控制台已经更新了,所以要到Ap ...
- Alternate Task UVA - 11728 (暴力。。分解质因子)
题意: 输入一个正整数S,(S <= 1000)求一个最大的正整数N,使得N的所有正因子之和为S. 解析: ..求1000以内的所有数的正因子和 ...输出.. #include <io ...
- plsql 只有三个文本框,无法登陆
plsql版本与oracle版本不一致,如 你装的是oracle 64位,但是plsql装的是32位,就会出问题了,解决方案就是下载个64位plsql
- IoT固/软件更新及开源选项
会出什么问题呢?大多数这些设备的设计都不像是被恶意攻击的目标. 嵌入式系统传统上被认为是稳定的产品, 但实施起来成本高昂, 因为投资回报率(ROI)在的周期比较长. 在过去一旦发货, 就很少需要更新这 ...
- UVA.12169 Disgruntled Judge ( 拓展欧几里得 )
UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...
- 使用IPMI控制/监控Linux服务器
1 IPMI简述 IPMI提供了很多丰富功能,我使用的功能,说得大白话一点,就是: 1.获取本设备的硬件信息:包括CPU和主板的温度.电压.风扇转速. 2.在设备A上,通过命令,控制远程设 ...
- 【bzoj4337】【Bjoi2015】树的同构
题解 无标号树的HASH: 找到树的重心,以重心为根求出括号序列: 由于树的重心最多只有两个,取字典序的最小括号序列HASH即可 树的括号序列$s_{u}="(s_{v_{1}},s_{v_ ...
- 如何获取codeforces的完整数据?(玄学方法)
做cf题总是wa,wa了以后还没发看完整数据,好气哦! 怎么办? 这其实非常简单 首先看一下wa的那个数据有什么特点 比如说n = 1111,m = 1111 那么就if(n == 1111 & ...
- interface思考练习一
参考了这篇文章,博主超级优秀,看他的最好,我只是写了点自己看他的博文学到的东西.CSDNzdwzzu2006 接口这东西认真学是在第一次构建工程的时候,很晕菜,原来学SE时不扎实,导致东西都不会用,看 ...
- jsp的四大作用域
http://lavasoft.blog.51cto.com/62575/275586/ jsp中四个作用域的区别 JSP内置对象作用域表 名称 作用域 application 在所有应用程序中有效, ...