知识大全 文章抓取之下载图片和文件

Posted 字节

篇首语:天赋如同自然花木,要用学习来修剪本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文章抓取之下载图片和文件相关的知识,希望对你有一定的参考价值。

  来到新公司后第一个任务就是让我给编辑部的人抓文章 文章抓取工具公司已经开发了一个 我也就直接拿来用了 结果用的很不习惯 操作太繁琐里面的代码逻辑也是比较混乱 所以我就大刀阔斧对它进行了一番修改 我主要还是希望能使这个工具尽量的通用一些 虽说各个网站都不一样 但抓了几天后还是发现有些共同的东西的 通过设置各个元素的xpath表达式 基本可以解决大部分的网站抓取     抽取出文章列表的标题链接 一般的标题链接都是放在ul或者是div里面的a标签 而这些ul和div往往都会设置一个class属性 于是文章的xpath一般可以设置 //div[@class= title ]    列表页都是会有分页的 通过设置起始页和末页的大小 进行一个循环即可    根据上面的文章链接获取内容的链接后 就可以发出一个请求获取正文部分 正文部分如果是文本还是比较好解决 最多的要求就是去掉每个网站的广告 运气好些你会碰到一些仁慈点的网站 广告所在的元素会有一些明显的特征 如加了id或是class属性 这样就可以设置要过滤的节点来进行过滤    暂时还在想……    最后要讲讲文章正文部分不单单是文本呢 有图片的 甚至还有下载资料(如rar zip压缩包)的 怎么办 起初工具里是可以支持下载图片的 而且我发现它使用的是WebClient 实现文件下载的 如果下载地址是绝对定位的形式可以下载 如果图片是根据参数动态生成的就麻烦了 会报Uri格式错误     最后下载的实现大概这样                  Stream stream = _response GetResponseStream()                  FileStream fs = new FileStream(filePath + fileName FileMode Create)                      // kb下载                 //byte[] _buffer=new byte[ ];                 //int count = stream Read(_buffer _buffer Length)                  //while (count > )                 //                 //    fs Write(_buffer _buffer Length)                  //    count = stream Read(_buffer _buffer Length)                  //                     //fs Flush()                  //fs Close()                  //stream Close()                      //逐字节下载                 int size;                 while ((size = stream ReadByte()) != )                                      fs WriteByte(Convert ToByte(size))                                   stream Close()                  fs Flush()                  fs Close()     

 现在下载是一个字节一个字节来从Stream中读取 感觉比较慢些 自己也试了 kb来读取可是发现读取的文章图片是这样的    不仅图片有问题 下载的rar这些文件也是打不开的 如果一个字节一个字节则一切都OK        cha138/Article/program/net/201311/13281

相关参考

知识大全 怎么在暴风影音中下载的视频不能播放啊!还要什么与之关联的文件什么的

怎么在暴风影音中下载的视频不能播放啊!还要什么与之关联的文件什么的?各位大神们哪位能告诉我解决方法下最新版为什么下载的视频用暴风影音播放不了还要下载插件?怎么解决啊?那是那个视频格式需要解码器,暴风要

知识大全 解析PHP实现下载文件的两种方法

解析PHP实现下载文件的两种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对使用PH

知识大全 华为手机微信里聊天图片无法加载我,不小心把文件删掉了怎么恢复谢谢

华为手机微信里聊天图片无法加载我,不小心把文件删掉了怎么恢复谢谢1.首先我们在手机浏览器上进入手机应用宝\\360助手下载安卓手机恢复大师软件,按照安装向导进行操作。2.打开运行安卓手机恢复大师,在软

知识大全 微信朋友圈里别人发的文章能删除吗

微信朋友圈里别人发的文章能删除吗?占不占手机空间啊?对的,其实不知是朋友圈的内容,一般聊天室发图片一旦下载下来就会储存到你的手机,不过微信的图片都是有经过压缩,所占用空间不是什么问题,如果要清理的话,

知识大全 请问哪位可以帮忙下载中国知网文章啊

请问哪位可以帮忙下载中国知网文章啊?万分感谢,急等ai***@163.给你发了,请查收。有哪位朋友帮忙下载一篇中国知网的文章私信我题目和邮箱求帮我下载一篇中国知网文章“广义碰撞”模型及应用【作者】&n

知识大全 php文章中图片处理的使用

  array_diff($arr$arr)  php数组函数之一用来计算数组的差集正则匹配图片标签用sinaeditor添加的图片删除操作用法之一今天晚上在用新浪编辑器发表文章的过程中使用到了此函数

知识大全 asp提取文章内容描述(去除图片,html连接)

  asp教程提取文章内容描述(去除图片连接)cha138/Article/program/net/201311/14136

知识大全 JS实现图片直接下载示例代码

JS实现图片直接下载示例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文为大家详细介绍下

知识大全 JS 实现图片直接下载示例代码

JS实现图片直接下载示例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文为大家详细介绍下使用

知识大全 魅族存放下载的主题中的壁纸和图标在哪个文件夹

魅族存放下载的主题中的壁纸和图标在哪个文件夹?详细说明,谢谢!文档里有个个性化的文件夹,里面有下载的主题包复制一个出来把文件名后缀改为.zip然后解压来,就有了,望采纳在“主题”里面下载的壁纸在哪个文