webmagic

webmagic

5款实用爬虫小工具推荐(云爬虫+采集器)

采集交流优采云 发表了文章 • 0 个评论 • 789 次浏览 • 2020-05-30 08:01 • 来自相关话题

  目前市面上我们常见的爬虫软件大致可以界定为两大类:云爬虫和采集器(特别说明:自己开发的爬虫工具和爬虫框架除外)
  
  
  至于最终选择哪款爬虫软件,我们还是须要依照爬虫自己的特性与优势,以及我们自己的需求而进行选择。下面就我就将自己积累的5款实用爬虫软件整理分享给你们,希望对你们有效提取信息提供便利。
  推荐一:神箭手云爬虫
  
  
  简介:神箭手云是一个大数据应用开发平台,为开发者提供成套的数据采集、数据剖析和机器学习开发工具,为企业提供专业化的数据抓取、数据实时监控和数据剖析服务。功能强悍,涉及云爬虫、API、机器学习、数据清洗、数据转让、数据定制和私有化布署等。
  优点:
  推荐二:八爪鱼
  
  
  简介:八爪鱼数据采集系统以完全自主研制的分布式云计算平台为核心,可以在太短的时间内,轻松从各类不同的网站或者网页获取大量的规范化数据,帮助任何须要从网页获取信息的顾客实现数据自动化采集,编辑,规范化爬虫软件哪种好,摆脱对人工搜索及搜集数据的依赖爬虫软件哪种好,从而减少获取信息的成本,提高效率。
  优点:
  推荐三:集搜客GooSeeker
  
  
  简介:GooSeeker的优点显而易见,就是其通用性,对于简单网站,其定义好规则,获取xslt文件后,爬虫代码几乎不需要更改,可结合scrapy使用,提高爬取速率。
  优点:
  推荐四:WebMagic
  WebMagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。WebMagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持手动重试、自定义UA/cookie等功能。
  推荐五:DenseSpider
  简介:Go语言实现的高性能爬虫,基于go_spider开发。实现了单机并发采集,深度遍历,自定义深度层级等特点。
  优点: 查看全部

  目前市面上我们常见的爬虫软件大致可以界定为两大类:云爬虫和采集器(特别说明:自己开发的爬虫工具和爬虫框架除外)
  
  
  至于最终选择哪款爬虫软件,我们还是须要依照爬虫自己的特性与优势,以及我们自己的需求而进行选择。下面就我就将自己积累的5款实用爬虫软件整理分享给你们,希望对你们有效提取信息提供便利。
  推荐一:神箭手云爬虫
  
  
  简介:神箭手云是一个大数据应用开发平台,为开发者提供成套的数据采集、数据剖析和机器学习开发工具,为企业提供专业化的数据抓取、数据实时监控和数据剖析服务。功能强悍,涉及云爬虫、API、机器学习、数据清洗、数据转让、数据定制和私有化布署等。
  优点:
  推荐二:八爪鱼
  
  
  简介:八爪鱼数据采集系统以完全自主研制的分布式云计算平台为核心,可以在太短的时间内,轻松从各类不同的网站或者网页获取大量的规范化数据,帮助任何须要从网页获取信息的顾客实现数据自动化采集,编辑,规范化爬虫软件哪种好,摆脱对人工搜索及搜集数据的依赖爬虫软件哪种好,从而减少获取信息的成本,提高效率。
  优点:
  推荐三:集搜客GooSeeker
  
  
  简介:GooSeeker的优点显而易见,就是其通用性,对于简单网站,其定义好规则,获取xslt文件后,爬虫代码几乎不需要更改,可结合scrapy使用,提高爬取速率。
  优点:
  推荐四:WebMagic
  WebMagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。WebMagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持手动重试、自定义UA/cookie等功能。
  推荐五:DenseSpider
  简介:Go语言实现的高性能爬虫,基于go_spider开发。实现了单机并发采集,深度遍历,自定义深度层级等特点。
  优点:

Webmagic(爬虫)抓取新浪博客案例

采集交流优采云 发表了文章 • 0 个评论 • 296 次浏览 • 2020-05-19 08:00 • 来自相关话题

  Webmagic框架更侧重实际的内容抓取。今天为你们分享Webmagic 爬虫框架抓取新浪博客的案例。
  我们以作者的新浪博客 作为反例。在这个事例里,我们要从最终的博客文章页面,抓取博客的标题、内容、日期等信息,也要从列表页抓取博客的链接等信息,从而获取这个博客的所有文章。
  列表页的格式是““, 其中“0_1”中的“1”是可变的页数。
  
  文章页的格式是“”,其中“95b4e3010102xsua”是可变的字符。
  
  通过前面的剖析新浪博客超级爬虫(网站推广工具) v14绿色版,我先要找到文章的 url,再愈发 url 获取文章。所以怎么发觉这个博客中所有的文章地址,是爬虫的第一步。
  我们可以使用正则表达式 +//.html 对 URL 进行一次简略过滤。这里比较复杂的是,这个 URL 过于空泛,可能会抓取到其他博客的信息,所以我们必须从列表页中指定的区域获取 URL。
  在这里,我们使用 xpath//div[@class=//”articleList//”]选中所有区域,再使用 links()或者 xpath//a/@href 获取所有链接,最后再使用正则表达式 +//.html,对 URL 进行过滤,去掉一些“编辑”或者“更多”之类的链接。于是,我们可以这样写:
   page.addTargetRequests(
page.getHtml().xpath("//div[@class=/"articleList/"]"
).links().regex("http://blog//.sina//.com//.cn/ ... 6quot;).all());
  同时,我们须要把所有找到的列表页也加到待下载的 URL 中去:
   page.addTargetRequests(
page.getHtml().links().regex(
"http://blog//.sina//.com//.cn/ ... 6quot;).all());
  文章页面信息的抽取是比较简单的,写好对应的 xpath 抽取表达式就可以了。
   page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));

page.putField("content", page.getHtml().xpath(
"//div[@id='articlebody']//div[@class='articalContent']"));

page.putField("date",page.getHtml().xpath(
"//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));
  现在,我们早已定义了对列表和目标页进行处理的方法,现在我们须要在处理时对她们进行分辨。在这个反例中,区分方法很简单,因为列表页和目标页在 URL 格式上是不同的,所以直接用 URL 区分就可以了!
  这个反例完整的代码如下:
   package us.codecraft.webmagic.samples;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class SinaBlogProcessor implements PageProcessor {
public static final String URL_LIST = "http://blog//.sina//.com//.cn/ ... 3B%3B
public static final String URL_POST = "http://blog//.sina//.com//.cn/ ... 3B%3B

private Site site = Site.me().setDomain("blog.sina.com.cn").setSleepTime(3000).setUserAgent(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

@Override public void process(Page page) {
//列表页
if (page.getUrl().regex(URL_LIST).match()) {
page.addTargetRequests(page.getHtml().xpath("//div[@class=/"articleList/"]").links().regex(URL_POST).all());
page.addTargetRequests(page.getHtml().links().regex(URL_LIST).all());
//文章页} else {
page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));
page.putField("content", page.getHtml().xpath("//div[@id='articlebody']//div[@class='articalContent']"));
page.putField("date",page.getHtml().xpath("//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));}}
@Override public Site getSite() {
return site;}
public static void main(String[] args) {
Spider.create(new SinaBlogProcessor()).addUrl("http://blog.sina.com.cn/s/arti ... 6quot;).run();
} }
  通过这个反例我们可以发觉主要使用几个方式:
  如果你认为用 if-else 来分辨不同处理有些不方便新浪博客超级爬虫(网站推广工具) v14绿色版,那么可以使用 SubPageProcessor 来解决这个问题。 查看全部

  Webmagic框架更侧重实际的内容抓取。今天为你们分享Webmagic 爬虫框架抓取新浪博客的案例。
  我们以作者的新浪博客 作为反例。在这个事例里,我们要从最终的博客文章页面,抓取博客的标题、内容、日期等信息,也要从列表页抓取博客的链接等信息,从而获取这个博客的所有文章。
  列表页的格式是““, 其中“0_1”中的“1”是可变的页数。
  
  文章页的格式是“”,其中“95b4e3010102xsua”是可变的字符。
  
  通过前面的剖析新浪博客超级爬虫(网站推广工具) v14绿色版,我先要找到文章的 url,再愈发 url 获取文章。所以怎么发觉这个博客中所有的文章地址,是爬虫的第一步。
  我们可以使用正则表达式 +//.html 对 URL 进行一次简略过滤。这里比较复杂的是,这个 URL 过于空泛,可能会抓取到其他博客的信息,所以我们必须从列表页中指定的区域获取 URL。
  在这里,我们使用 xpath//div[@class=//”articleList//”]选中所有区域,再使用 links()或者 xpath//a/@href 获取所有链接,最后再使用正则表达式 +//.html,对 URL 进行过滤,去掉一些“编辑”或者“更多”之类的链接。于是,我们可以这样写:
   page.addTargetRequests(
page.getHtml().xpath("//div[@class=/"articleList/"]"
).links().regex("http://blog//.sina//.com//.cn/ ... 6quot;).all());
  同时,我们须要把所有找到的列表页也加到待下载的 URL 中去:
   page.addTargetRequests(
page.getHtml().links().regex(
"http://blog//.sina//.com//.cn/ ... 6quot;).all());
  文章页面信息的抽取是比较简单的,写好对应的 xpath 抽取表达式就可以了。
   page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));

page.putField("content", page.getHtml().xpath(
"//div[@id='articlebody']//div[@class='articalContent']"));

page.putField("date",page.getHtml().xpath(
"//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));
  现在,我们早已定义了对列表和目标页进行处理的方法,现在我们须要在处理时对她们进行分辨。在这个反例中,区分方法很简单,因为列表页和目标页在 URL 格式上是不同的,所以直接用 URL 区分就可以了!
  这个反例完整的代码如下:
   package us.codecraft.webmagic.samples;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class SinaBlogProcessor implements PageProcessor {
public static final String URL_LIST = "http://blog//.sina//.com//.cn/ ... 3B%3B
public static final String URL_POST = "http://blog//.sina//.com//.cn/ ... 3B%3B

private Site site = Site.me().setDomain("blog.sina.com.cn").setSleepTime(3000).setUserAgent(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

@Override public void process(Page page) {
//列表页
if (page.getUrl().regex(URL_LIST).match()) {
page.addTargetRequests(page.getHtml().xpath("//div[@class=/"articleList/"]").links().regex(URL_POST).all());
page.addTargetRequests(page.getHtml().links().regex(URL_LIST).all());
//文章页} else {
page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));
page.putField("content", page.getHtml().xpath("//div[@id='articlebody']//div[@class='articalContent']"));
page.putField("date",page.getHtml().xpath("//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));}}
@Override public Site getSite() {
return site;}
public static void main(String[] args) {
Spider.create(new SinaBlogProcessor()).addUrl("http://blog.sina.com.cn/s/arti ... 6quot;).run();
} }
  通过这个反例我们可以发觉主要使用几个方式:
  如果你认为用 if-else 来分辨不同处理有些不方便新浪博客超级爬虫(网站推广工具) v14绿色版,那么可以使用 SubPageProcessor 来解决这个问题。

java爬虫系列第一讲

采集交流优采云 发表了文章 • 0 个评论 • 260 次浏览 • 2020-05-04 08:02 • 来自相关话题

  java爬虫系列第一讲-爬虫入门1. 概述java爬虫系列包含什么内容?java爬虫框架webmgic入门使用webmgic爬取 中的影片资源(动作影片列表页、电影下载地址等信息)使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)本篇文章主要内容:介绍java中好用的爬虫框架java爬虫框架webmagic介绍使用webgic爬取动作影片列表信息2. java中好用的爬虫框架怎样判别框架是否优秀?容易学习和使用,网上对应的学习资料比较多,并且比较健全使用的人比较多,存在的坑他人早已帮你填的差不多了,用上去会更顺心一些框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流框架稳定、方便扩充
  按照以上几点的,推荐一款非常好用的java爬虫框架webmgic
  3. webmgic介绍WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。webmagic官网:webmgic英文学习文档:4.使用webgic爬取动作影片列表
  使用webgic爬取 爱影片 电影列表资源信息
  示例源码地址
  1. 新建springboot项目java-pachong
  2. 导入maven配置
  

org.springframework.boot
spring-boot-starter


org.projectlombok
lombok
true


org.springframework.boot
spring-boot-starter-test
test



us.codecraft
webmagic-core
0.7.3


fastjson
com.alibaba


commons-io
commons-io


commons-io
commons-io


fastjson
com.alibaba


fastjson
com.alibaba


log4j
log4j


slf4j-log4j12
org.slf4j




us.codecraft
webmagic-extension
0.7.3


us.codecraft
webmagic-selenium
0.7.3


net.minidev
json-smart
2.2.1



com.alibaba
fastjson
1.2.49


commons-lang
commons-lang
2.6


commons-io
commons-io
2.6


commons-codec
commons-codec
1.11


commons-collections
commons-collections
3.2.2

  3. 编写抓取影片数据的代码
  在谷歌浏览器中访问 爱影片动作片列表
  F12发觉列表页中数据是通过一个ajax恳求获取的,我们获取恳求地址
  编写抓取代码
  package com.ady01.demo1;
import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* description:第一个爬虫示例,爬去动作片列表信息
* <b>time:2019/4/20 10:58
* <b>author:ready likun_557@163.com
*/
@Slf4j
public class Ady01comPageProcessor implements PageProcessor {
@Override
public void process(Page page) {
log.info("爬取成功!");
log.info("爬取的内容:" + page.getRawText());
}
@Override
public Site getSite() {
return Site.me().setSleepTime(1000).setRetryTimes(3);
}
public static void main(String args) {
String url = "https://m.ady01.com/rs/film/li ... 3B%3B
Spider.create(new Ady01comPageProcessor()).addUrl(url).thread(1).run();
}
}
  4. 运行爬虫代码
  运行Ady01comPageProcessor中的main方式java爬虫超级经典,执行结果如下:
  5.总结本文中主要用了一个示例说明webgic是这么简单就可以完成数据的抓取工作java爬虫超级经典,从代码中可以看出复杂的代码webmagic都帮我们屏蔽了,只须要我们去关注业务代码的编撰。文章中没有详尽介webmagic怎样使用,至于我为什么没有在文档中去做说明,主要是webigc早已提供了十分健全的学习文档,可以移步到webgic英文文档,需要更深入了解的可以研究一下webgic的源码,对你编撰爬虫是十分有用的。明日我们将爬取每位动作影片详情页信息,采集详情页中影片的下载地址示例代码,导入到idea中运行,idea中须要安装maven和lombok的支持更多技术文章请关注公众号:javacode2018 查看全部
  java爬虫系列第一讲-爬虫入门1. 概述java爬虫系列包含什么内容?java爬虫框架webmgic入门使用webmgic爬取 中的影片资源(动作影片列表页、电影下载地址等信息)使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)本篇文章主要内容:介绍java中好用的爬虫框架java爬虫框架webmagic介绍使用webgic爬取动作影片列表信息2. java中好用的爬虫框架怎样判别框架是否优秀?容易学习和使用,网上对应的学习资料比较多,并且比较健全使用的人比较多,存在的坑他人早已帮你填的差不多了,用上去会更顺心一些框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流框架稳定、方便扩充
  按照以上几点的,推荐一款非常好用的java爬虫框架webmgic
  3. webmgic介绍WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。webmagic官网:webmgic英文学习文档:4.使用webgic爬取动作影片列表
  使用webgic爬取 爱影片 电影列表资源信息
  示例源码地址
  1. 新建springboot项目java-pachong
  2. 导入maven配置
  

org.springframework.boot
spring-boot-starter


org.projectlombok
lombok
true


org.springframework.boot
spring-boot-starter-test
test



us.codecraft
webmagic-core
0.7.3


fastjson
com.alibaba


commons-io
commons-io


commons-io
commons-io


fastjson
com.alibaba


fastjson
com.alibaba


log4j
log4j


slf4j-log4j12
org.slf4j




us.codecraft
webmagic-extension
0.7.3


us.codecraft
webmagic-selenium
0.7.3


net.minidev
json-smart
2.2.1



com.alibaba
fastjson
1.2.49


commons-lang
commons-lang
2.6


commons-io
commons-io
2.6


commons-codec
commons-codec
1.11


commons-collections
commons-collections
3.2.2

  3. 编写抓取影片数据的代码
  在谷歌浏览器中访问 爱影片动作片列表
  F12发觉列表页中数据是通过一个ajax恳求获取的,我们获取恳求地址
  编写抓取代码
  package com.ady01.demo1;
import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* description:第一个爬虫示例,爬去动作片列表信息
* <b>time:2019/4/20 10:58
* <b>author:ready likun_557@163.com
*/
@Slf4j
public class Ady01comPageProcessor implements PageProcessor {
@Override
public void process(Page page) {
log.info("爬取成功!");
log.info("爬取的内容:" + page.getRawText());
}
@Override
public Site getSite() {
return Site.me().setSleepTime(1000).setRetryTimes(3);
}
public static void main(String args) {
String url = "https://m.ady01.com/rs/film/li ... 3B%3B
Spider.create(new Ady01comPageProcessor()).addUrl(url).thread(1).run();
}
}
  4. 运行爬虫代码
  运行Ady01comPageProcessor中的main方式java爬虫超级经典,执行结果如下:
  5.总结本文中主要用了一个示例说明webgic是这么简单就可以完成数据的抓取工作java爬虫超级经典,从代码中可以看出复杂的代码webmagic都帮我们屏蔽了,只须要我们去关注业务代码的编撰。文章中没有详尽介webmagic怎样使用,至于我为什么没有在文档中去做说明,主要是webigc早已提供了十分健全的学习文档,可以移步到webgic英文文档,需要更深入了解的可以研究一下webgic的源码,对你编撰爬虫是十分有用的。明日我们将爬取每位动作影片详情页信息,采集详情页中影片的下载地址示例代码,导入到idea中运行,idea中须要安装maven和lombok的支持更多技术文章请关注公众号:javacode2018

5款实用爬虫小工具推荐(云爬虫+采集器)

采集交流优采云 发表了文章 • 0 个评论 • 789 次浏览 • 2020-05-30 08:01 • 来自相关话题

  目前市面上我们常见的爬虫软件大致可以界定为两大类:云爬虫和采集器(特别说明:自己开发的爬虫工具和爬虫框架除外)
  
  
  至于最终选择哪款爬虫软件,我们还是须要依照爬虫自己的特性与优势,以及我们自己的需求而进行选择。下面就我就将自己积累的5款实用爬虫软件整理分享给你们,希望对你们有效提取信息提供便利。
  推荐一:神箭手云爬虫
  
  
  简介:神箭手云是一个大数据应用开发平台,为开发者提供成套的数据采集、数据剖析和机器学习开发工具,为企业提供专业化的数据抓取、数据实时监控和数据剖析服务。功能强悍,涉及云爬虫、API、机器学习、数据清洗、数据转让、数据定制和私有化布署等。
  优点:
  推荐二:八爪鱼
  
  
  简介:八爪鱼数据采集系统以完全自主研制的分布式云计算平台为核心,可以在太短的时间内,轻松从各类不同的网站或者网页获取大量的规范化数据,帮助任何须要从网页获取信息的顾客实现数据自动化采集,编辑,规范化爬虫软件哪种好,摆脱对人工搜索及搜集数据的依赖爬虫软件哪种好,从而减少获取信息的成本,提高效率。
  优点:
  推荐三:集搜客GooSeeker
  
  
  简介:GooSeeker的优点显而易见,就是其通用性,对于简单网站,其定义好规则,获取xslt文件后,爬虫代码几乎不需要更改,可结合scrapy使用,提高爬取速率。
  优点:
  推荐四:WebMagic
  WebMagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。WebMagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持手动重试、自定义UA/cookie等功能。
  推荐五:DenseSpider
  简介:Go语言实现的高性能爬虫,基于go_spider开发。实现了单机并发采集,深度遍历,自定义深度层级等特点。
  优点: 查看全部

  目前市面上我们常见的爬虫软件大致可以界定为两大类:云爬虫和采集器(特别说明:自己开发的爬虫工具和爬虫框架除外)
  
  
  至于最终选择哪款爬虫软件,我们还是须要依照爬虫自己的特性与优势,以及我们自己的需求而进行选择。下面就我就将自己积累的5款实用爬虫软件整理分享给你们,希望对你们有效提取信息提供便利。
  推荐一:神箭手云爬虫
  
  
  简介:神箭手云是一个大数据应用开发平台,为开发者提供成套的数据采集、数据剖析和机器学习开发工具,为企业提供专业化的数据抓取、数据实时监控和数据剖析服务。功能强悍,涉及云爬虫、API、机器学习、数据清洗、数据转让、数据定制和私有化布署等。
  优点:
  推荐二:八爪鱼
  
  
  简介:八爪鱼数据采集系统以完全自主研制的分布式云计算平台为核心,可以在太短的时间内,轻松从各类不同的网站或者网页获取大量的规范化数据,帮助任何须要从网页获取信息的顾客实现数据自动化采集,编辑,规范化爬虫软件哪种好,摆脱对人工搜索及搜集数据的依赖爬虫软件哪种好,从而减少获取信息的成本,提高效率。
  优点:
  推荐三:集搜客GooSeeker
  
  
  简介:GooSeeker的优点显而易见,就是其通用性,对于简单网站,其定义好规则,获取xslt文件后,爬虫代码几乎不需要更改,可结合scrapy使用,提高爬取速率。
  优点:
  推荐四:WebMagic
  WebMagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。WebMagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持手动重试、自定义UA/cookie等功能。
  推荐五:DenseSpider
  简介:Go语言实现的高性能爬虫,基于go_spider开发。实现了单机并发采集,深度遍历,自定义深度层级等特点。
  优点:

Webmagic(爬虫)抓取新浪博客案例

采集交流优采云 发表了文章 • 0 个评论 • 296 次浏览 • 2020-05-19 08:00 • 来自相关话题

  Webmagic框架更侧重实际的内容抓取。今天为你们分享Webmagic 爬虫框架抓取新浪博客的案例。
  我们以作者的新浪博客 作为反例。在这个事例里,我们要从最终的博客文章页面,抓取博客的标题、内容、日期等信息,也要从列表页抓取博客的链接等信息,从而获取这个博客的所有文章。
  列表页的格式是““, 其中“0_1”中的“1”是可变的页数。
  
  文章页的格式是“”,其中“95b4e3010102xsua”是可变的字符。
  
  通过前面的剖析新浪博客超级爬虫(网站推广工具) v14绿色版,我先要找到文章的 url,再愈发 url 获取文章。所以怎么发觉这个博客中所有的文章地址,是爬虫的第一步。
  我们可以使用正则表达式 +//.html 对 URL 进行一次简略过滤。这里比较复杂的是,这个 URL 过于空泛,可能会抓取到其他博客的信息,所以我们必须从列表页中指定的区域获取 URL。
  在这里,我们使用 xpath//div[@class=//”articleList//”]选中所有区域,再使用 links()或者 xpath//a/@href 获取所有链接,最后再使用正则表达式 +//.html,对 URL 进行过滤,去掉一些“编辑”或者“更多”之类的链接。于是,我们可以这样写:
   page.addTargetRequests(
page.getHtml().xpath("//div[@class=/"articleList/"]"
).links().regex("http://blog//.sina//.com//.cn/ ... 6quot;).all());
  同时,我们须要把所有找到的列表页也加到待下载的 URL 中去:
   page.addTargetRequests(
page.getHtml().links().regex(
"http://blog//.sina//.com//.cn/ ... 6quot;).all());
  文章页面信息的抽取是比较简单的,写好对应的 xpath 抽取表达式就可以了。
   page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));

page.putField("content", page.getHtml().xpath(
"//div[@id='articlebody']//div[@class='articalContent']"));

page.putField("date",page.getHtml().xpath(
"//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));
  现在,我们早已定义了对列表和目标页进行处理的方法,现在我们须要在处理时对她们进行分辨。在这个反例中,区分方法很简单,因为列表页和目标页在 URL 格式上是不同的,所以直接用 URL 区分就可以了!
  这个反例完整的代码如下:
   package us.codecraft.webmagic.samples;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class SinaBlogProcessor implements PageProcessor {
public static final String URL_LIST = "http://blog//.sina//.com//.cn/ ... 3B%3B
public static final String URL_POST = "http://blog//.sina//.com//.cn/ ... 3B%3B

private Site site = Site.me().setDomain("blog.sina.com.cn").setSleepTime(3000).setUserAgent(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

@Override public void process(Page page) {
//列表页
if (page.getUrl().regex(URL_LIST).match()) {
page.addTargetRequests(page.getHtml().xpath("//div[@class=/"articleList/"]").links().regex(URL_POST).all());
page.addTargetRequests(page.getHtml().links().regex(URL_LIST).all());
//文章页} else {
page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));
page.putField("content", page.getHtml().xpath("//div[@id='articlebody']//div[@class='articalContent']"));
page.putField("date",page.getHtml().xpath("//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));}}
@Override public Site getSite() {
return site;}
public static void main(String[] args) {
Spider.create(new SinaBlogProcessor()).addUrl("http://blog.sina.com.cn/s/arti ... 6quot;).run();
} }
  通过这个反例我们可以发觉主要使用几个方式:
  如果你认为用 if-else 来分辨不同处理有些不方便新浪博客超级爬虫(网站推广工具) v14绿色版,那么可以使用 SubPageProcessor 来解决这个问题。 查看全部

  Webmagic框架更侧重实际的内容抓取。今天为你们分享Webmagic 爬虫框架抓取新浪博客的案例。
  我们以作者的新浪博客 作为反例。在这个事例里,我们要从最终的博客文章页面,抓取博客的标题、内容、日期等信息,也要从列表页抓取博客的链接等信息,从而获取这个博客的所有文章。
  列表页的格式是““, 其中“0_1”中的“1”是可变的页数。
  
  文章页的格式是“”,其中“95b4e3010102xsua”是可变的字符。
  
  通过前面的剖析新浪博客超级爬虫(网站推广工具) v14绿色版,我先要找到文章的 url,再愈发 url 获取文章。所以怎么发觉这个博客中所有的文章地址,是爬虫的第一步。
  我们可以使用正则表达式 +//.html 对 URL 进行一次简略过滤。这里比较复杂的是,这个 URL 过于空泛,可能会抓取到其他博客的信息,所以我们必须从列表页中指定的区域获取 URL。
  在这里,我们使用 xpath//div[@class=//”articleList//”]选中所有区域,再使用 links()或者 xpath//a/@href 获取所有链接,最后再使用正则表达式 +//.html,对 URL 进行过滤,去掉一些“编辑”或者“更多”之类的链接。于是,我们可以这样写:
   page.addTargetRequests(
page.getHtml().xpath("//div[@class=/"articleList/"]"
).links().regex("http://blog//.sina//.com//.cn/ ... 6quot;).all());
  同时,我们须要把所有找到的列表页也加到待下载的 URL 中去:
   page.addTargetRequests(
page.getHtml().links().regex(
"http://blog//.sina//.com//.cn/ ... 6quot;).all());
  文章页面信息的抽取是比较简单的,写好对应的 xpath 抽取表达式就可以了。
   page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));

page.putField("content", page.getHtml().xpath(
"//div[@id='articlebody']//div[@class='articalContent']"));

page.putField("date",page.getHtml().xpath(
"//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));
  现在,我们早已定义了对列表和目标页进行处理的方法,现在我们须要在处理时对她们进行分辨。在这个反例中,区分方法很简单,因为列表页和目标页在 URL 格式上是不同的,所以直接用 URL 区分就可以了!
  这个反例完整的代码如下:
   package us.codecraft.webmagic.samples;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class SinaBlogProcessor implements PageProcessor {
public static final String URL_LIST = "http://blog//.sina//.com//.cn/ ... 3B%3B
public static final String URL_POST = "http://blog//.sina//.com//.cn/ ... 3B%3B

private Site site = Site.me().setDomain("blog.sina.com.cn").setSleepTime(3000).setUserAgent(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

@Override public void process(Page page) {
//列表页
if (page.getUrl().regex(URL_LIST).match()) {
page.addTargetRequests(page.getHtml().xpath("//div[@class=/"articleList/"]").links().regex(URL_POST).all());
page.addTargetRequests(page.getHtml().links().regex(URL_LIST).all());
//文章页} else {
page.putField("title", page.getHtml().xpath("//div[@class='articalTitle']/h2"));
page.putField("content", page.getHtml().xpath("//div[@id='articlebody']//div[@class='articalContent']"));
page.putField("date",page.getHtml().xpath("//div[@id='articlebody']//span[@class='time SG_txtc']").regex("//((.*)//)"));}}
@Override public Site getSite() {
return site;}
public static void main(String[] args) {
Spider.create(new SinaBlogProcessor()).addUrl("http://blog.sina.com.cn/s/arti ... 6quot;).run();
} }
  通过这个反例我们可以发觉主要使用几个方式:
  如果你认为用 if-else 来分辨不同处理有些不方便新浪博客超级爬虫(网站推广工具) v14绿色版,那么可以使用 SubPageProcessor 来解决这个问题。

java爬虫系列第一讲

采集交流优采云 发表了文章 • 0 个评论 • 260 次浏览 • 2020-05-04 08:02 • 来自相关话题

  java爬虫系列第一讲-爬虫入门1. 概述java爬虫系列包含什么内容?java爬虫框架webmgic入门使用webmgic爬取 中的影片资源(动作影片列表页、电影下载地址等信息)使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)本篇文章主要内容:介绍java中好用的爬虫框架java爬虫框架webmagic介绍使用webgic爬取动作影片列表信息2. java中好用的爬虫框架怎样判别框架是否优秀?容易学习和使用,网上对应的学习资料比较多,并且比较健全使用的人比较多,存在的坑他人早已帮你填的差不多了,用上去会更顺心一些框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流框架稳定、方便扩充
  按照以上几点的,推荐一款非常好用的java爬虫框架webmgic
  3. webmgic介绍WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。webmagic官网:webmgic英文学习文档:4.使用webgic爬取动作影片列表
  使用webgic爬取 爱影片 电影列表资源信息
  示例源码地址
  1. 新建springboot项目java-pachong
  2. 导入maven配置
  

org.springframework.boot
spring-boot-starter


org.projectlombok
lombok
true


org.springframework.boot
spring-boot-starter-test
test



us.codecraft
webmagic-core
0.7.3


fastjson
com.alibaba


commons-io
commons-io


commons-io
commons-io


fastjson
com.alibaba


fastjson
com.alibaba


log4j
log4j


slf4j-log4j12
org.slf4j




us.codecraft
webmagic-extension
0.7.3


us.codecraft
webmagic-selenium
0.7.3


net.minidev
json-smart
2.2.1



com.alibaba
fastjson
1.2.49


commons-lang
commons-lang
2.6


commons-io
commons-io
2.6


commons-codec
commons-codec
1.11


commons-collections
commons-collections
3.2.2

  3. 编写抓取影片数据的代码
  在谷歌浏览器中访问 爱影片动作片列表
  F12发觉列表页中数据是通过一个ajax恳求获取的,我们获取恳求地址
  编写抓取代码
  package com.ady01.demo1;
import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* description:第一个爬虫示例,爬去动作片列表信息
* <b>time:2019/4/20 10:58
* <b>author:ready likun_557@163.com
*/
@Slf4j
public class Ady01comPageProcessor implements PageProcessor {
@Override
public void process(Page page) {
log.info("爬取成功!");
log.info("爬取的内容:" + page.getRawText());
}
@Override
public Site getSite() {
return Site.me().setSleepTime(1000).setRetryTimes(3);
}
public static void main(String args) {
String url = "https://m.ady01.com/rs/film/li ... 3B%3B
Spider.create(new Ady01comPageProcessor()).addUrl(url).thread(1).run();
}
}
  4. 运行爬虫代码
  运行Ady01comPageProcessor中的main方式java爬虫超级经典,执行结果如下:
  5.总结本文中主要用了一个示例说明webgic是这么简单就可以完成数据的抓取工作java爬虫超级经典,从代码中可以看出复杂的代码webmagic都帮我们屏蔽了,只须要我们去关注业务代码的编撰。文章中没有详尽介webmagic怎样使用,至于我为什么没有在文档中去做说明,主要是webigc早已提供了十分健全的学习文档,可以移步到webgic英文文档,需要更深入了解的可以研究一下webgic的源码,对你编撰爬虫是十分有用的。明日我们将爬取每位动作影片详情页信息,采集详情页中影片的下载地址示例代码,导入到idea中运行,idea中须要安装maven和lombok的支持更多技术文章请关注公众号:javacode2018 查看全部
  java爬虫系列第一讲-爬虫入门1. 概述java爬虫系列包含什么内容?java爬虫框架webmgic入门使用webmgic爬取 中的影片资源(动作影片列表页、电影下载地址等信息)使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)本篇文章主要内容:介绍java中好用的爬虫框架java爬虫框架webmagic介绍使用webgic爬取动作影片列表信息2. java中好用的爬虫框架怎样判别框架是否优秀?容易学习和使用,网上对应的学习资料比较多,并且比较健全使用的人比较多,存在的坑他人早已帮你填的差不多了,用上去会更顺心一些框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流框架稳定、方便扩充
  按照以上几点的,推荐一款非常好用的java爬虫框架webmgic
  3. webmgic介绍WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。webmagic官网:webmgic英文学习文档:4.使用webgic爬取动作影片列表
  使用webgic爬取 爱影片 电影列表资源信息
  示例源码地址
  1. 新建springboot项目java-pachong
  2. 导入maven配置
  

org.springframework.boot
spring-boot-starter


org.projectlombok
lombok
true


org.springframework.boot
spring-boot-starter-test
test



us.codecraft
webmagic-core
0.7.3


fastjson
com.alibaba


commons-io
commons-io


commons-io
commons-io


fastjson
com.alibaba


fastjson
com.alibaba


log4j
log4j


slf4j-log4j12
org.slf4j




us.codecraft
webmagic-extension
0.7.3


us.codecraft
webmagic-selenium
0.7.3


net.minidev
json-smart
2.2.1



com.alibaba
fastjson
1.2.49


commons-lang
commons-lang
2.6


commons-io
commons-io
2.6


commons-codec
commons-codec
1.11


commons-collections
commons-collections
3.2.2

  3. 编写抓取影片数据的代码
  在谷歌浏览器中访问 爱影片动作片列表
  F12发觉列表页中数据是通过一个ajax恳求获取的,我们获取恳求地址
  编写抓取代码
  package com.ady01.demo1;
import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* description:第一个爬虫示例,爬去动作片列表信息
* <b>time:2019/4/20 10:58
* <b>author:ready likun_557@163.com
*/
@Slf4j
public class Ady01comPageProcessor implements PageProcessor {
@Override
public void process(Page page) {
log.info("爬取成功!");
log.info("爬取的内容:" + page.getRawText());
}
@Override
public Site getSite() {
return Site.me().setSleepTime(1000).setRetryTimes(3);
}
public static void main(String args) {
String url = "https://m.ady01.com/rs/film/li ... 3B%3B
Spider.create(new Ady01comPageProcessor()).addUrl(url).thread(1).run();
}
}
  4. 运行爬虫代码
  运行Ady01comPageProcessor中的main方式java爬虫超级经典,执行结果如下:
  5.总结本文中主要用了一个示例说明webgic是这么简单就可以完成数据的抓取工作java爬虫超级经典,从代码中可以看出复杂的代码webmagic都帮我们屏蔽了,只须要我们去关注业务代码的编撰。文章中没有详尽介webmagic怎样使用,至于我为什么没有在文档中去做说明,主要是webigc早已提供了十分健全的学习文档,可以移步到webgic英文文档,需要更深入了解的可以研究一下webgic的源码,对你编撰爬虫是十分有用的。明日我们将爬取每位动作影片详情页信息,采集详情页中影片的下载地址示例代码,导入到idea中运行,idea中须要安装maven和lombok的支持更多技术文章请关注公众号:javacode2018

官方客服QQ群

微信人工客服

QQ人工客服


线