java爬虫笔记

一、URl解释

 1、URl统一资源定位符, Uniform Resource Location 也就是说是Internet上信息资源的字符串,所谓的网页抓取就是把URl地址中指定的网络资源从网络中读取出来,保存到本地,

2、java.net.URl类可以对相应的web服务器发出请求并且获得响应的文档,java.net.URl类有过一个默认的构造函数,使用URl的地址作为参数,构造URl对象。

URL pageURl=new URl(path)接着可以获得URl对象类获得网络流,操作网络资源  INputStream steram=pageURL.openStraeam(); 在实际的网络韩静中比较复杂,只用java.net的API来模拟IE客户端的工作,代码量大,需要处理HTTP返回的状态码,设置HTTP代理,处理HTTPS协议 ,咋实际开发中使用Apache的HTTP客户端开源项目HTTPClient处理各种HTTP连接中的问题,只需要在项目中导入HTTPClient.jar包,就可以模拟IE来获取网页。

     /////创建一个客户端   http://hc.apache.org/downloads.cgi  这是源码包的下载地址

    HTTpClient httpclient=new HTTPClient(); 

//创建一个get方法没累死与在浏览器地址栏中输入一个地址

  GetMethod getMethod=new GetMethod("http://www.baidu.com");

//回车,获得响应状态码

 int statusCode=httpClient.executeMethod(getMethod);

//查看命中的情况,可以获得很东西,比如 head  Cookies等

   System.out.println("Response" +getMethod.getResponseBodyASString());

//释放

getMethod.releaseConnection()

另外post和get的不同之处就是get是把参数写在URL中一同提交。

设置代理服务器的IP地址和端口   ////hrrpClient.getHostConfiguration().setProxy("192.178.222.2",2323);

//告诉HTTP使用抢先认证,否则你会收到“你没有资格”

httpClient.getParams().setAuthenticationPreemptive(true)

3、处理HTTP状态码

      int statusCode=httpClient.executeMethod(getMethod)//获得状态码   状态码表示HTTP协议反悔的响应状态,比如客户端像服务器发送请求,若果成功返回200 表示成功,如果请求的资源不存在,则返回404错误。

  HTTP状态码分为五种类型,分别以1-5开头,有三位数字组成,1XX用作实验用途,

4、assert的意思是,表达式 n!=0应该是True 否则根据程序逻辑后面的代码会出错,若果断言失败,assert语句本身就会跑出AssertionError

5、pdb调试程序 以参数 -m pdb 启动后,pdb定位到下一步要执行的代码 输入命令1 来查看代码,输入n 调试到代码的下一行,任何时候都可以输入 变量 p +变量名来查看变量

 

另外一种调试就是导入 import  pdb 然后设置 程序可能出错的地方放置一个pdb.set_trace()就可以设置一大个断点。可以用命令p 查看变量,或者命令c 继续执行。这个方式比直接挨冻pdb单步调用调试的效率要高

6、单元测试

测试驱动开发 TDD Test-Driven Development 单元测试是用来对一个模块,一个函数或者一个类来进行正确性检验的测试工作,如果单元测试那个通过,说明函数正常,但是不通过,说明函数存在bug ,要么就是测试条件输入不正确,需要修复测试单元测试。

 

posted @ 2018-03-17 21:54  疏桐  阅读(174)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();