爬虫入门1---谈谈网络爬虫

爬虫入门2---爬虫框架webmagic

爬虫入门3---爬虫实战

爬虫实战

      3.1 需求

        每日某时间段从****博客中爬取文档,存入文章数据库中。

      3.2 数模准备

        下面是****各频道地址:

这边先准备两张表:

频道表:

文章表:

向tb_channel表添加记录:

      3.3 代码编写

             3.3.1模块编写

(1)idea创建springboot工程(这里不做详细讲解),创建模块article_crawler ,引入依赖

  <dependencies><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies>

(2)创建配置文件application.yml

server:port: 9015
spring:application:name: article-crawler #指定服务名datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://****:3306/test_article?characterEncoding=UTF8username: ****password: ****jpa:database: MySQLshow-sql: trueredis:host: ****password: ****

(3)创建启动类

@SpringBootApplication
@EnableScheduling
public class ArticleCrawlerApplication {public static void main(String[] args) {SpringApplication.run(ArticleCrawlerApplication.class);}@Value("${spring.redis.host}")private String redis_host;@Value("${spring.redis.password}")private String redis_password;@Beanpublic IdWorker idWorker(){return  new IdWorker(1,1);}@Beanpublic RedisScheduler redisScheduler(){JedisPoolConfig config = new JedisPoolConfig();// 连接池的配置对象config.setMaxTotal(100);// 设置最大连接数config.setMaxIdle(10);// 设置最大空闲连接数JedisPool jedisPool=new JedisPool(config,redis_host,6379,20000,redis_password);return new RedisScheduler(jedisPool);}

(4)实体类及数据访问接口(这里不做详解)

             3.3.2 爬取类   

        创建文章爬取类ArticleProcessor

/*** 文章爬取类*/
@Component
public class ArticleProcessor implements PageProcessor {@Overridepublic void process(Page page) {page.addTargetRequests(  page.getHtml().links().regex("https://blog.csdn.net/[a-z 0-9 -]+/article/details/[0-9]{8}").all());//文章标题String title=page.getHtml().xpath("//*[@id=\"mainBox\"]/main/div[1]/div/div/div[1]/h1").get();String content=page.getHtml().xpath("//*[@id=\"article_content\"]/div[2]").get();if(title!=null && content!=null){page.putField("title" ,title );page.putField("content",content);}else{page.setSkip(true);//跳过}}@Overridepublic Site getSite() {return Site.me().setRetryTimes(3000).setSleepTime(100);}
}

             3.3.3 入库类

创建文章入库类ArticleDbPipeline ,负责将爬取的数据存入数据库

@Component
public class ArticleDbPipeline implements Pipeline {@Autowiredprivate ArticleDao articleDao;@Autowiredprivate IdWorker idWorker;private String channelId;//频道IDpublic void setChannelId(String channelId) {this.channelId = channelId;}@Overridepublic void process(ResultItems resultItems, Task task) {String title=resultItems.get("title");//取出标题String content=resultItems.get("content");//内容Article article=new Article();article.setId(idWorker.nextId()+"");article.setChannelid(channelId);article.setTitle(title);article.setContent(content);articleDao.save(article);}
}

             3.3.4 任务类

创建任务类,可根据@Scheduled设置定时抓取

/*** 任务类*/
@Component
public class ArticleTask {@Autowiredprivate ArticleProcessor articleProcessor;@Autowiredprivate ArticleDbPipeline articleDbPipeline;@Autowiredprivate RedisScheduler redisScheduler;/*** 爬取AI文章*/@Scheduled(cron = "0 15 15 * * ?")public void aiTask(){System.out.println("开始爬取CSDN文章");Spider spider =Spider.create(articleProcessor);spider.addUrl("https://blog.csdn.net/nav/ai");articleDbPipeline.setChannelId("ai");spider.addPipeline(articleDbPipeline);spider.setScheduler(redisScheduler);spider.start();}
}

运行springboot工程,查询数据库数据,可以看到数据库入库数据。

当然上面还只是一个简单的爬虫入门工程,真正应用到生产上面是需要设置代理ip,绕验证码等较复杂操作,这里不做详解,有兴趣的童鞋,可以自己研究下。

爬虫入门3---爬虫实战相关推荐

  1. Python爬虫入门之爬虫解析提取数据的四种方法

    本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助. 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步 ...

  2. Python爬虫入门2(实战)

    文章目录 13.B站直播间弹幕爬取 代码: 运行结果: 14.xpath解析爬虫 入门: lxml安装: 基本格式: 15.xpath入门讲解 材料: py代码: 运行结果: 技巧: 16.xpath ...

  3. python爬虫入门-python爬虫入门,8分钟就够了,最简单的基础教学!

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  4. python 爬虫《百炼成佛》爬虫入门 (爬虫介绍)第一个爬虫程序

    爬虫<百炼成佛> 爬虫是什么? 爬虫:通过编写程序来获取到互联网上的资源百度 爬虫:通过编写程序来获取到互联网上的资源百度 需求:用程序模拟浏览器.输入一个网址.从该网址中获取到资源或者内 ...

  5. python爬虫入门-Python 爬虫从入门到进阶之路(一)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联 ...

  6. python博客项目评论_Python 爬虫入门——小项目实战(自动私信博客园某篇博客下的评论人,随机发送一条笑话,完整代码在博文最后)...

    之前写的都是针对爬虫过程中遇到问题的解决方案,没怎么涉及到实际案例.这次,就以博客园为主题,写一个自动私信博客下的评论人员(在本篇留下的评论的同学也会被自动私信,如果不想被私信,同时又有问题,请私信我 ...

  7. 用python爬虫的基本步骤-Python爬虫入门:爬虫基础了解

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  8. python爬虫都需要什么手续_Python爬虫入门 | 3 爬虫必备Python知识

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  9. python爬虫什么结构好_python爬虫入门:爬虫基础了解一下 !! 盘它

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

最新文章

  1. 异步导致UI句柄增加的解决办法
  2. 6000字说透,如何做好产品「适老化」!
  3. C语言-按照单词反转字符串(完整代码)
  4. 用matlab画声偶级辐射,matlab结题报告(电偶极子的辐射场)
  5. 什么是 SNMP 和 MIB
  6. 礼金记账本安卓_份子钱记账app
  7. 服务器安装字体库解决出现xx问题
  8. 使用usb串口线作为console
  9. win10复制粘贴不能用解决方法汇总
  10. java怎么没有jmf包_java JMF
  11. 如何给Pepper机器人配置ROS使其可以到达指定地点
  12. 74LS85的IP核设计
  13. iOS:UITableView实现飘带动画
  14. 计算机的边界值分析法,黑盒测试:边界值分析法及测试用例设计.doc
  15. Codeforces 940E Cashback
  16. 【优化求解】粒子群优化和重力搜索算法求解MLP问题matlab源码
  17. 云服务器的ip地址打不开如何解决?
  18. matlab中bwmorph函数的作用,Matlab中的bwmorph函数解释
  19. boot接收图片并保存本地
  20. 蓝牙HID驱动:某键盘,Fn组合键,小概率无响应,普通Keyboard功能正常。

热门文章

  1. 【SSA三维路径规划】基于matlab麻雀算法无人机三维航迹规划【含Matlab源码 301期】
  2. IPC网络高清摄像机基础知识3(Insta360硬件设计之路 “来自2015年”)
  3. python中tan怎么表示_python中Tan的逆(tan-1) - python
  4. 约翰-聂夫的投资原则
  5. 九度1001 A+B for Matrices
  6. Jackson之JSON序列化和多态反序列化
  7. Chapter 1.伦敦的歌剧魅影 ——《地与光》
  8. 无线路由登不上服务器怎么办,无线路由器管理界面怎么登录,无法进入管理界面怎么办...
  9. 影视剪辑,超实用的视频剪辑素材网站
  10. imageJ基本操作