页面抓取时应该注意到的几个问题

页面抓取时应该注意到的几个问题

ID:18752957

大小:338.50 KB

页数:24页

时间:2018-09-22

页面抓取时应该注意到的几个问题_第1页
页面抓取时应该注意到的几个问题_第2页
页面抓取时应该注意到的几个问题_第3页
页面抓取时应该注意到的几个问题_第4页
页面抓取时应该注意到的几个问题_第5页
资源描述:

《页面抓取时应该注意到的几个问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一:网页更新   我们知道,一般网页中的信息是不断翻新的,这也要求我们定期的去抓这些新信息,但是这个“定期”该怎么理解,也就是多长时间需要抓一次该页面,其实这个定期也就是页面缓存时间,在页面的缓存时间内我们再次抓取该网页是没有必要的,反而给人家服务器造成压力。就比如说我要抓取博客园首页,首先清空页面缓存,从Last-Modified到Expires,我们可以看到,博客园的缓存时间是2分钟,而且我还能看到当前的服务器时间Date,如果我再次刷新页面的话,这里的Date将会变成下图中 If-Modified-Since,然后发送给服务器,判断浏览器的缓存有没有过期?最后服务器发

2、现If-Modified-Since>=Last-Modifined的时间,服务器也就返回304了,不过发现这cookie信息真是贼多啊。。。在实际开发中,如果在知道网站缓存策略的情况下,我们可以让爬虫2min爬一次就好了,当然这些都是可以由数据团队来配置维护了,好了,下面我们用爬虫模拟一下。1usingSystem;2usingSystem.Net;34namespaceConsoleApplication25{6publicclassProgram7{8staticvoidMain(string[]args)9{10DateTimeprevDateTime=DateTi

3、me.MinValue;1112for(inti=0;i<10;i++)13{14try15{16varurl="http://www.3344mm.com";1718varrequest=(HttpWebRequest)HttpWebRequest.Create(url);1920request.Method="Head";2122if(i>0)23{24request.IfModifiedSince=prevDateTime;25}2627request.Timeout=3000;2829varresponse=(HttpWebResponse)request.GetR

4、esponse();3031varcode=response.StatusCode;3233//如果服务器返回状态是200,则认为网页已更新,记得当时的服务器时间34if(code==HttpStatusCode.OK)35{36prevDateTime=Convert.ToDateTime(response.Headers[HttpResponseHeader.Date]);37}3839Console.WriteLine("当前服务器的状态码:{0}",code);40}41catch(WebExceptionex)42{43if(ex.Response!=null)4

5、4{45varcode=(ex.ResponseasHttpWebResponse).StatusCode;4647Console.WriteLine("当前服务器的状态码:{0}",code);48}49}50}51}52}53} 二:网页编码的问题   有时候我们已经抓取到网页了,准备去解析的时候,tmd的全部是乱码,真是操蛋,比如下面这样,或许我们依稀的记得在html的meta中有一个叫做charset的属性,里面记录的就是编码方式,还有一个要点就是response.CharacterSet这个属性中同样也记录了编码方式,下面我们再来试试看。艹,居然还是乱码,蛋疼了,

6、这次需要到官网上面去看一看,到底http头信息里面都交互了些什么,凭什么浏览器能正常显示,爬虫爬过来的就不行。查看了http头信息,终于我们知道了,浏览器说我可以解析gzip,deflate,sdch这三种压缩方式,服务器发送的是gzip压缩,到这里我们也应该知道了常用的web性能优化。1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading;6usingHtmlAgilityPack;7usingSystem.Text.R

7、egularExpressions;8usingSystem.Net;9usingSystem.IO;10usingSystem.IO.Compression;1112namespaceConsoleApplication213{14publicclassProgram15{16staticvoidMain(string[]args)17{18//varcurrentUrl="http://www.xeneihan.com/";1920varcurrentUrl="http://www.niuaba.com/";2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。