IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java爬虫学习记录 -> 正文阅读

[Java知识库]java爬虫学习记录

使用的WebMagic框架学习
1.程序主体
主要实现PageProcessor接口,重写两个方法。

  1. process,通过page.getHtml()获取到完整的页面内容(如果有js渲染的,加入依赖即可,如下),
    然后对html页面处理获得自己想要的数据。有Css或$、xpath和regex三种方式选取。
    1、css和 $ 是一样的,方式和jquery里面的选择器相似,例如 $(".sign",“text”) 代表获取.sign类里面的文本信息。
    2、xpath,举例:.xpath("//p[@class=‘job_salary’]/text()")
    开头必须两个//,text()代表获取类为job_salary的p标签里面的文本。
    3、regex正则表达式,一般用来获取链接。
    当获取到新的连接后,可通过将链接的url存入List集合放入page.addTargetRequests();括号对新链接进行爬取。这里要判断什么时候是新链接时,什么时候是原来的链接,用判断语句隔开处理数据。
       <dependency>
            <groupId>us.codecraft</groupId>
            <artifactId>webmagic-selenium</artifactId>
            <version>0.7.5</version>
        </dependency>
  1. getSite,可以设置一些参数,例如请求头,页面格式,重试次数,连接超时时间等。例如:
    Site site=Site.me() .setRetryTimes(3)//重试5次 .setRetrySleepTime(5000)//5s间隔 .setTimeOut(10*1000) //连接超时 .setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0") .setCharset("utf-8");//10s请求时间
    直接return 此site即可。

2.启动
下载器可以配置代理,通过先向代理请求,代理再向目标请求,防止被查ip。new MyProcessor()为自己创建的实现PageProcessor接口的类。因为采取到的url可能有重复,因此采用布隆去重,但是可能导致误去,但是肯定会把相同的找出来。优点是内存占用小,放的100000表示,留这么大的空间,比如你要抓取100个链接,那就写100多个的数字,比要抓取的多一点就好。采用布隆去重时,需添加依赖如下。
想保存抓取的文件时,用.addPipeline(new FilePipeline(“path”))//保存下载文件path为保存路径

此外

//        创建下载器
//        HttpClientDownloader downloader=new HttpClientDownloader();
//        给下载器配置代理服务器信息
//        downloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("111.225.153.105",3256)));
        //启动
        Spider spider = Spider.create(new MyProcessor())
//                .thread(5)//多少个线程
                .addUrl(url)//访问的网址
//                .setDownloader(downloader) //设置下载器
//				.addPipeline(new FilePipeline("path"))//保存下载文件
                .setScheduler(new QueueScheduler().setDuplicateRemover(new BloomFilterDuplicateRemover(100000)));//bloom去重
        spider.run();
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>16.0.1</version>
        </dependency>
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:17:12  更:2021-08-10 13:18:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:52:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码