用 ScrapySharp 并行下载天涯图片
用 ScrapySharp 并行下载天涯图片
#r "HtmlAgilityPack.dll"
#r "ScrapySharp.dll"
open System
open System.Threading.Tasks
open HtmlAgilityPack
open ScrapySharp.Extensions
let url = "http://bbs.tianya.cn/post-12-563201-1.shtml"
let web = new ScrapySharp.Network.ScrapingBrowser()
let html = web.DownloadString(new Uri(url))
let doc = new HtmlAgilityPack.HtmlDocument()
doc.LoadHtml( html )
let urls =
doc.DocumentNode.CssSelect("div.bbs-content > img")
|> Seq.map(fun i -> i.GetAttributeValue("original"))
let urls = [ "http://img3.laibafile.cn/p/m/166829011.jpg";
"http://img3.laibafile.cn/p/m/166829027.jpg";
"http://img3.laibafile.cn/p/m/166829000.jpg";
"http://img3.laibafile.cn/p/m/166829039.jpg";
"http://img3.laibafile.cn/p/m/166829034.jpg";
"http://img3.laibafile.cn/p/m/166829030.jpg";
"http://img3.laibafile.cn/p/m/166829016.jpg";
"http://img3.laibafile.cn/p/m/166829024.jpg" ]
let GetPicture (filePath: string) (url: string) =
let path = filePath.Substring(0, filePath.LastIndexOf("."))
let ty =
let t = new Uri( url )
match t.Authority with
| var when var.Contains("laibafile.cn") -> "http://bbs.tianya.cn"
| var when var.Contains("tianya.cn") -> "http://bbs.tianya.cn"
| _ -> t.Scheme + "://" + t.Authority
let web = new ScrapySharp.Network.ScrapingBrowser()
web.NavigateToPage( new Uri(ty)) |> ignore
if not( IO.Directory.Exists( path ) ) then IO.Directory.CreateDirectory( path ) |> ignore
let file = url.Substring( url.LastIndexOf("/") )
let pic = (web.NavigateToPage( new Uri( url ))).RawResponse.Body
printfn "%s" url
File.WriteAllBytes( ( path + file ), pic )
let outPic = GetPicture filePath
Parallel.ForEach(urls, outPic) |> ignore
用 ScrapySharp 并行下载天涯图片相关推荐
- [爬虫学习笔记]C# 使用 ScrapySharp 并行下载天涯图片
最近因为一个作业需要完成CNKI爬虫,研究爬虫架构的时候发现了这个疑似移植于Python的著名开源爬虫框架Scrapy的ScrapySharp,然而在网上寻找之后只发现了这个F#的Demo,就使用原文 ...
- 用 ScrapySharp 下载天涯图片
用 ScrapySharp 下载天涯图片 let urlToPicture (filePath: string) (url: string) = // let url = "http ...
- 网页效率之DNS查找和并行下载
首先,一个页面所需要访问的域名数量为n,那么就需要n次DNS查找,而DNS查找通常是blocking call,就是说在得到结果之后才能继续,所以越多的DNS查找,反应速度就越慢: 雅虎的YSlow插 ...
- php完美实现下载远程图片保存到本地(保存微信头像)
2019独角兽企业重金招聘Python工程师标准>>> /** * php完美实现下载远程图片保存到本地 * @param: 文件url,保存文件目录,保存文件名称,使用的下载方式 ...
- python软件在下载库文件_python – 并行下载多个文件的库或工具
我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...
- python下载图片-Python下载URL图片
所谓下载URL图片就是指通过网络图片的URL去用脚本自动获取和下载图片到本地. 这里介绍两种方法,一种需要用到第三方库requests,一种直接使用Python自带的库urllib. 首先找到你要下载 ...
- python批量下载网页文件-Python批量下载网页图片详细教程
目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件夹,每个文件夹包含n个链接所对应的文件夹. 步骤1:获得网页的所有链接,访问所有链接,获得链接里的图片地址. 步骤2:根据图片 ...
- python下载网页里面所有的图片-Python批量下载网页图片详细教程
很多朋友在网上查找批量下载图片的方法~发觉挺凌乱的,无从下手.这里绿茶小编就来跟大家分享下使用Python批量下载图片方法. 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件 ...
- aspx网页背景图片设置代码_python requests,BeautifulSoup批量下载360图片
本代码演示通过python的requests,BeautifulSoup库批量下载360图片,并保存在本机的路径 代码如下: #BeautifulSoup库是网页爬虫解析库,主要用来对HTML源代码进 ...
最新文章
- 学校计算机机房好处,浅谈学校计算机机房维护
- sizeof 操作符详解
- 织梦Cms二次开发出来的模块的导出成xml问题
- Python whl文件制作简介
- 互联网人才流向说明了什么
- Hashmap扩容时出现循环链表(jdk1.8把头插法换成了尾插法的原因)
- “单口相声”回归!罗永浩要开发布会了:黑科技!不售票!
- 金笛邮件之邮件倒入专题
- Python(2.7)-元组(tuple)
- python用链接表实现栈_python 用链表实现栈(计算器1)
- 190812每日一句
- 【云计算学习教程】云计算虚拟化技术和容器技术详解
- 程序员工资真的很高么,月入几万的难道不是吹牛?
- Linux驱动(并发):02---编译乱序、执行乱序(屏障API(bm、rmb、wmb、__iormb、__iowmb))
- 数字孪生的4个最佳实践
- 建Kangle+EasyPanel对接SWAP IDC虚拟主机自助开通完整教程
- IPv6测试.测试您的手机或智能设备的IPv4和IPv6连接性.支持简易模式测试您的手机是否可以连接IPv6网络.支持详细模式测试您的手机是否可以连接IPv6网络
- 云原生相关介绍,25 个点很全面
- 分数化成有限小数的方法_怎样把分数化成小数
- Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe