当前位置 博文首页 > 文章内容

    java爬虫入门篇

    作者:糖丝橙 栏目:IT相关内容 时间:2020-05-04 15:35:22

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



         说到爬虫,在做这个项目之前我也是一头雾水,不知道到底这是个什么鬼,就是感觉很牛逼的一个东西(听起来很高大上),但是自己上手之后才明白,所有的项目基本上都差不多,只要你投入精力认真的去做了,或多或少都会有一些收获,当然肯定很多人会问的一个问题就是python爬虫不是更好吗,为什么要用java,我想说的是语言本身没什么,主要是思想,就是你处理这件事情或者业务的逻辑和方式只要比别人的好,那就是好的,因为能实现爬虫的语言多了去了,肯定是学不完的。

         第一步,你要找打你需要爬取的数据源,也就是说你要爬取数据在网络上所在额度位置,我们这里爬取的数据是足球相关的信息,因为我们这个项目做的是资料库相关的数据,合作方是球探数据,虽然买了球探的接口,可以直接获取数据,但是有些我们需要的数据球探提供的接口中并没有,所以我们需要自己去获取这些数据。

         首先我们访问一下球探数据的资料库首页,修改该页面的语言为自己需要的简繁或英文等。点击英国,去看英超的资料库,然后看切尔西球队对应的信息,然后打开浏览器的开发者平台的network部分,点击空白处然后刷新当前页面,然后会看到一个名字叫team36.js?version=yyyyMMddHH的js文件,然后获取这个地址,这个地址copy一下去访问,你最多访问一次,不可能查过两次就会爆出50x Server Error !服务器报错了。

         数据地址找到了就是http://zq.win007.com/jsData/teamInfo/team36.js?version=yyyyMMddHH ,然后我们就需要开视爬去数据了,我们用的是springBoot(maven工程),主要爬去工具是HttpClient,当然别的Http求情工具也是可以的。

         主要maven依赖

    a32687b978b4aa7bbaa600151e341e98.png

         这里是对应的爬去代码,这只是一个简单的入门,并没有什么思想,主要是先把数据拿下来,就这样拿。

    import java.io.BufferedInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.net.URI;

    import java.net.URISyntaxException;

     

    import org.apache.http.HttpEntity;

    import org.apache.http.client.ClientProtocolException;

    import org.apache.http.client.methods.HttpGet;

    import org.apache.http.impl.client.CloseableHttpClient;

    import org.apache.http.impl.client.HttpClients;

    import org.junit.Test;

     

    public class SpiderTeamInfo {

    @Test

    public void spiderTeamInfo() throws URISyntaxException, ClientProtocolException, IOException {

    CloseableHttpClient client = HttpClients.createDefault();

    HttpGet httpGet = new HttpGet();

    URI uri = new URI("http://zq.win007.com/jsData/teamInfo/team36.js?version=2018041415");

    httpGet.setURI(uri);

    httpGet.addHeader("Accept-Charset", "GBK,utf-8");

    httpGet.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");

    httpGet.addHeader("Accept-Language", "zh-CN,zh");

    httpGet.addHeader("Cookie", "");

    //在哪一页访问到的这个js

    httpGet.addHeader("referer","http://zq.win007.com/cn/team/Summary/24.html");

    httpGet.addHeader("User-Agent",

    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");

     

    HttpEntity entity = client.execute(httpGet).getEntity();

    String rspStr = getRspStr(entity);

    System.out.println(rspStr);

    }

     

    private String getRspStr(HttpEntity entity) throws UnsupportedOperationException, IOException {

    if(null==entity) {

    return null;

    }

    int leng = 0;

    byte[] bytes = new byte[1024];

    InputStream in = entity.getContent();

    BufferedInputStream bis = new BufferedInputStream(in);

    StringBuilder sb = new StringBuilder();

    while(-1!=(leng = bis.read(bytes))) {

    sb.append(new String(bytes,0,leng,"UTF-8"));

    }

    return sb.toString();

    }

    }

    9f99dfb10bec747507a67b34ddeab12a.png     这就是爬去到的数据。ok , this is spider fisrt step. 这样的话,java爬虫就算是刚刚入门,本文这是入门,HttpClient可以池化,实际生产中肯定不会像上面这样写代码,第一步不是最重要的,最重要的解析爬虫,而不是爬去数据。


    文章来源:CSDN博客

    原文链接:https://blog.csdn.net/qq1437715969/article/details/79937632

    如有侵权,请联系本人删除