话不多说,直接上代码,代码中注释都写的很清楚了!!!

这样吧,加一个流程图,用来方便的了解WebMagic

package com.softeem.demo;

import java.awt.print.Pageable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.List;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Html;
import us.codecraft.webmagic.selector.Selectable;

/**
 * 
 * @author 张智远
 *
 *WebMagic框架 使用Java原生开发方式
 *核心很简单,功能性给简单性让步
 *四个核心组件
 *PageProcessor 负责解析页面
 *Scheduler负责管理待抓取的URL
 *Pipeline 负责抽取结果处理,做持久化操作
 *Downloader 负责从网上下载页面
 */
public class GetPhoneNumber implements PageProcessor{
    PrintWriter pw=null;
     //抓取网站的相关配置
    private Site site=Site.me()
            .setCharset("utf-8")//设置字符集
            .setTimeOut(10000)//设置超时时间
            .setRetrySleepTime(3)//设置重试次数
            .setSleepTime(1000);//设置休眠时间
    @Override
    public Site getSite() {
        return site;
    }
     //爬取逻辑
    @Override
    public void process(Page page) {
        //获取到通过Downloader下载下来的URL
        Selectable url=    page.getUrl();
        System.out.println(url);
        //通过正则表达式去匹配是否是我们想要的抓取的网页URL 正则表达式只能匹配格式的争取行,不能检验数据的有效性
        if(url.regex("http://www.taohaoma.com/mobile/number\\?p=\\d&order=").match()) {
            //开始抓取有用信息
            //System.out.println("匹配成功!");
            //获取页面信息
            Html html=page.getHtml();
            //System.out.println(html);
            //通过Xpath去解析Html  Xpath是w3c XSLT标准的主要元素 还是一门在xml文档中查找信息的语言
            //XQuery和Xpointer都是构建在Xpath之上
            List<String> list=html.xpath("[@id='f12']/table/tbody/tr/td[1]/a/text()").all();//用id进行定位
            //将文件保存到本地
            downPhoneNumber(list);
            for (String string : list) {
                System.out.println(string);
            }
            
        }
    }
    //将内容存放到本地的方法
    public void downPhoneNumber(List<String> list) {
        //描述存的位置路径文件
        File file=new File("D:/phoneNumber1.txt");
        
        try {
            //输出流
            FileOutputStream fos=new FileOutputStream(file);
            //字符流
             pw=new PrintWriter(fos,true);
            //往本地输出
            for (String string : list) {
                pw.println(string);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if(pw!=null)pw.close();
        }
        
    }
    
    //程序入口
    public static void main(String[] args) {
        Spider.create(new GetPhoneNumber())
        .thread(1)
        .addUrl("http://www.taohaoma.com/mobile/number?p=1&order=")
        .run();
    }
    
}

通过WebMagic框架抓取网页中的手机号(实验练习一)相关推荐

  1. Python抓取网页中的动态序列化数据

    Python抓取网页中的动态序列化数据 动态序列化数据经常应用于前后端分离的页面.或者通过VUE.JS等HTML页面环境,常规的爬虫抓取方法并不能满足数据采集的要求,因此需要其他的方式进行数据的采集. ...

  2. php正则获取li,用正则表达式抓取网页中的ul 和 li标签中最终的值!

    获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1";       ...

  3. 一个用php抓取网页中电子邮箱的实例

    原文出自: http://outofmemory.cn/code-snippet/36020/php-how-zhuaqu-wangye-youxiangdizhi-code php如何抓取网页中邮箱 ...

  4. Python小应用1 - 抓取网页中的链接地址

    看到一篇博文上讲到用Python写自动访问博客的功能,里面的核心功能就是抓取网页中的链接,类似一个网页爬虫工具.正好我刚学习Python,就决定自己练习一下.写了一下,原本觉得很简单的东西,搞了半天才 ...

  5. python获取网页图片_python抓取网页中的图片示例

    python抓取网页中的图片示例 代码如下: #coding:utf8 import re import urllib def getHTML(url): page = urllib.urlopen( ...

  6. php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)

    采集邮箱的php代码(抓取网页中的邮箱地址) 复制代码 代码如下: $url='http://www.jb51.net'; //这个网页里绝对含有邮件地址. $content=file_get_con ...

  7. java抓取页面表格_用java实现爬虫抓取网页中的表格数据功能源码

    [实例简介] 使用java代码基于MyEclipse开发环境实现爬虫抓取网页中的表格数据,将抓取到的数据在控制台打印出来,需要后续处理的话可以在打印的地方对数据进行操作.包解压后导入MyEclipse ...

  8. 批量验证邮箱地址php代码,php结合正则批量抓取网页中邮箱地址

    php如何抓取网页中邮箱地址,下面我就给大家分享一个用php抓取网页中电子邮箱的实例. $url='http://www.jb51.net'; //要采集的网址 $content=file_get_c ...

  9. c语言编程网页数据提取,怎么用c语言抓取网页中的数据

    当前位置:我的异常网» C语言 » 怎么用c语言抓取网页中的数据 怎么用c语言抓取网页中的数据 www.myexceptions.net  网友分享于:2013-07-17  浏览:390次 如何用c ...

最新文章

  1. HTTP协议基础知识点点滴滴
  2. BmpEncrypt v3.20.1017 ++ 加密器
  3. 2017.9.19 禁忌 失败总结
  4. Android:是时候掌握WebView与Js的交互技术了
  5. 基于Python+OpenCV的人脸口罩识别检测
  6. 读msdn文档----五种提高SQL性能的方法
  7. 「测绘知识」高等级道路竖曲线的精确计算方法
  8. jsonrpc php使用,基于php的json rpc原理及应用
  9. 有专门收C语言答案的软件吗,C语言二级考试题库APP
  10. python常遇到的各类问题解决办法
  11. Win11新建不了文本文档?Win11右键无法新建文本文档的解决方法
  12. app端-留存分析-周留存率报表开发
  13. 道友自诉:入职中软一个月(外包华为)就离职了!
  14. Eagle设计师必备利器管理工具
  15. 【2016读书】4月读书笔记
  16. 【Grub2】常见命令
  17. Linux中的which和whereis
  18. win10连接linux nfs,win10系统使用nFs共享的操作方法
  19. 关于Android官网打不开问题解决方案
  20. 掌柜智囊收银软件 v1.10.0.310官方版

热门文章

  1. 基于VueAxios制作音乐播放器(bilibili黑马程序员Vue入门学习记录)
  2. FPGA中的ODDR原语是干嘛用的?
  3. 广东工业大学文远知行杯新生程序设计竞赛(重现赛)复习
  4. 专题开发十二:JEECG微云高速开发平台-基础用户权限
  5. mts文件怎么转成mp4格式?
  6. 电网需求响应以及在居民用户中的应用介绍
  7. GOB算法matlab,智能天线赋形EBB算法和GOB算法比较
  8. 我做了一个霸气侧漏的极客专属版万圣节南瓜机器人!
  9. Android 验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框) 类似微信支付宝的密码输入框等
  10. 升级B2B平台模式,B2B电商交易系统供应链金融助力企业打造金融生态圈