最近因为一个作业需要完成CNKI爬虫,研究爬虫架构的时候发现了这个疑似移植于Python的著名开源爬虫框架Scrapy的ScrapySharp,然而在网上寻找之后只发现了这个F#的Demo,就使用原文中示例的网站写了这个C#版本的代码。

PS:研究之后发现,ScrapySharp和Scrapy差距还是挺大的,没有Scrapy那样完善的八大组件,只含有获取网页内容和基于HtmlAgilityPack扩展的网页解析功能,莫名有些小失望。

using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using HtmlAgilityPack;
using ScrapySharp.Extensions;
using ScrapySharp.Network;namespace ScrapySharpDemo
{class Program{static void Main(string[] args){//示例网站地址var url = "http://bbs.tianya.cn/post-12-563201-1.shtml";var web = new ScrapingBrowser();var html = web.DownloadString(new Uri(url));var doc = new HtmlDocument();doc.LoadHtml(html);//获取网站中的图片地址var urls= doc.DocumentNode.CssSelect("div.bbs-content > img").Select(node => node.GetAttributeValue("original")).ToList();//并行下载图片
            Parallel.ForEach(urls, SavePic);}public static void SavePic(string url){var web = new ScrapingBrowser();//因天涯网站限制,所有站外来源都无法访问图片,故先设置请求头Refer属性为当前页地址web.Headers.Add("Referer", "http://bbs.tianya.cn/post-12-563201-1.shtml");var pic = web.NavigateToPage(new Uri(url)).RawResponse.Body;var file = url.Substring(url.LastIndexOf("/", StringComparison.Ordinal));if (!Directory.Exists("imgs"))Directory.CreateDirectory("imgs");File.WriteAllBytes("imgs" + file, pic);}}
}

转载于:https://www.cnblogs.com/WayneShao/p/5858549.html

[爬虫学习笔记]C# 使用 ScrapySharp 并行下载天涯图片相关推荐

  1. 用 ScrapySharp 并行下载天涯图片

    用 ScrapySharp 并行下载天涯图片 #r "HtmlAgilityPack.dll" #r "ScrapySharp.dll" open System ...

  2. 爬虫学习笔记(十)—— Scrapy框架(五):下载中间件、用户/IP代理池、settings文件

    一.下载中间件 下载中间件是一个用来hooks进Scrapy的request/response处理过程的框架. 它是一个轻量级的底层系统,用来全局修改scrapy的request和response. ...

  3. Python3 爬虫学习笔记 C17【爬虫框架 pyspider — 基本使用】

    Python3 爬虫学习笔记第十七章 -- [爬虫框架 pyspider - 基本使用] 文章目录 [17.1]初识 pyspider [17.2]使用 pyspider [17.2.1]主界面 [1 ...

  4. Python3 爬虫学习笔记 C16【数据储存系列 — Redis】

    Python3 爬虫学习笔记第十六章 -- [数据储存系列 - Redis] 文章目录 [16.1]关于 Redis [16.2]使用 Redis [16.3]Key(键)操作 [16.4]Strin ...

  5. Python3 爬虫学习笔记 C12【验证码对抗系列 — 图形验证码】

    Python3 爬虫学习笔记第十二章 -- [验证码对抗系列 - 图形验证码] 文章目录 [12.1]关于普通图形验证码 [12.2]tesserocr 库识别验证码 [12.3]pytesserac ...

  6. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】

    Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...

  7. Python3 爬虫学习笔记 C07 【解析库 lxml】

    Python3 爬虫学习笔记第七章 -- [解析库 lxml] 文章目录 [7.1]关于 lxml [7.2]使用 XPath [7.3]查找所有节点 [7.4]查找子节点 [7.5]查找父节点 [7 ...

  8. Python3 爬虫学习笔记 C05 【Selenium + 无界面浏览器】

    Python3 爬虫学习笔记第五章 -- [Selenium + 无界面浏览器] 文章目录 [5.1]关于无界面浏览器 [5.2]PhantomJS [5.3]Headless Chrome [5.4 ...

  9. Python3 爬虫学习笔记 C04 【自动化测试工具 Selenium】

    Python3 爬虫学习笔记第四章 -- [自动化测试工具 Selenium] 文章目录 [4.1]下载驱动 [4.2]声明浏览器对象 [4.3]访问页面 [4.4]启动参数 [4.5]查找节点 [4 ...

最新文章

  1. openoj的一个小比赛(F题解题报告)poj3978(dp+素数筛选)
  2. 2020年最好用的手机是哪一款_2020年好评最多的三款手机,看看你在用哪款?
  3. 【零基础学习iOS开发】【02-C语言】05-进制
  4. hadoop学习——Hadoop核心组件
  5. java编写安卓计算器_Android计算器编写代码
  6. 树莓派简易快速安装OpenCV4
  7. 六度空间-c++实现
  8. java 国际象棋_java – 自我项目:使用GUI创建国际象棋游戏
  9. 汇客huikeCRM项目实战-牛刀小试
  10. 如何正确安装驱动程序
  11. C语言实现植物大战僵尸----学习过程
  12. python3数据可视化软件_Python数据可视化工具Plotly
  13. 小白组装电脑详细教程
  14. 05-【gorm】GORM Model FindFirstWhere等查询函数的区别
  15. .NET 组件集 Componentone 发布更新:Blazor Edition + 跨平台数据组件
  16. 一张学习规划图学透自动化测试
  17. mysql导入sql文件、数据库时报错ERROR: ASCII ‘\0‘ appeared in the statement
  18. pandas计算最大回撤
  19. 信创办公–基于WPS的PPT最佳实践系列 (插入表格或图标)
  20. 转自eNet硅谷动力: ADSL共享上网设置总结

热门文章

  1. oracle apex接口文件,Oracle之APEX深入开发指南
  2. Linux 与 硬件 —— 各个硬件设备在Linux中的文件名
  3. Duplicate property mapping of xxx found in xx 嵌套异常,重复的属性在映射中发现。
  4. node 常见的一些系统问题
  5. hdu 4676 Sum Of Gcd 莫队+phi反演
  6. 我对浮动的认识(一)
  7. 纯CSS三级弹出菜单
  8. CSDN技术主题月----“深度学习”代码笔记专栏
  9. 楼燚(yì)航的blog URL
  10. Uva10285 Longest Run on a Snowboard