WebMagic爬虫入门教程(一)简介

释放双眼,带上耳机,听听看~!

** (一)前言**

       
工作学习中,需要进行爬虫。百度百科上说,
网络爬虫(又被称为网页蜘蛛
,网络机器人,在FOAF
社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网
信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁
、自动索引、模拟程序或者蠕虫

       
网络爬虫,我是这样理解的,简单说,就是下载web网页上的html代码中的信息。

  那么到底用什么语言爬虫呢?python

不过python语言毕竟不太熟,虽然python爬虫
网络功能强大,比较方便模拟登陆、以及解析javascript ,
写起起程序来很是便捷,只有
网页解析这个劣势,不过我还是没有用它。

我使用的是java语言来爬虫,初学者才开始学习,没有什么经验,也就没有使用httpclient这些工具直接url爬虫,而是使用了国内的开源爬虫框架
webmagic框架来爬虫。

(二)简介

webmagic是一个国内的java开源爬虫框架,它采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化等),也支持多线程抓取、分布式抓取,并支持自动重试、自定义UA/cookie等功能。

对初学者而言,
webmagic包含页面抽取功能,很方便使用,初学者可以使用css selector、xpath和正则表达式进行链接和内容的提取,支持多个选择器链式调用。

(三)webmagic的java爬虫

不废话了,直接上代码。

maven依赖:


1
2
3
4
5
6
7
8
9
10
11
1<dependency>
2    <groupId>us.codecraft</groupId>
3    <artifactId>webmagic-core</artifactId>
4    <version>0.7.3</version>
5</dependency>
6<dependency>
7    <groupId>us.codecraft</groupId>
8    <artifactId>webmagic-extension</artifactId>
9    <version>0.7.3</version>
10</dependency>
11

1
2
1       java代码:
2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1package Webmagic.donghua.dmzj.com;
2
3/***Created by mo
4 *On 2017/10/30  ***15:36.
5 ******/
6import us.codecraft.webmagic.Page;
7import us.codecraft.webmagic.Site;
8import us.codecraft.webmagic.Spider;
9import us.codecraft.webmagic.processor.PageProcessor;
10import us.codecraft.webmagic.selector.Html;
11
12public class DmzjProcessor implements PageProcessor {
13    int myid = 0;
14    int size =10;
15    // 抓取网站的相关配置,可以包括编码、抓取间隔1s、重试次数等
16    private Site site = Site.me().setCharset("utf8").setRetryTimes(1000).setSleepTime(1000);
17    @Override
18    public Site getSite() {
19        return site;
20    }
21
22    @Override
23    public void process(Page page) {
24        Html html = page.getHtml();
25        size++;
26        String hahawebname = html.xpath("//div[@class=\"odd_anim_title_tnew\"]/div[@class=\"tvversion\"]/a/span[@class=\"anim_title_text\"]/h1/text()").get();//得分
27        String goal = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"anim_score_info\"]/span[@class=\"points_text\"]/text()").get();//得分
28        String mentotalold = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"score_statistics\"]/span[@id=\"score_count_span\"]/text()").get();//人数
29        String mentotal = mentotalold.replaceAll("人评分","");
30        String content = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescshort\"]/text()").get();//内容
31        String contentdetail = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescall\"]/text()").get();//内容
32        String url = "http://donghua.dmzj.com/donghua_info/"+size+".html";
33        System.out.println("hahawebname: "+ hahawebname);
34        System.out.println("goal: "+goal);
35        System.out.println("mentotal: "+ mentotal);
36        System.out.println("content: "+ content);
37        System.out.println("url:  "+ url);
38        System.out.println("contentdetail: "+ contentdetail);
39}
40    public static void main(String[] args) {
41        int username = 10;
42        DmzjProcessor my = new DmzjProcessor();
43        long startTime, endTime;
44        System.out.println("开始爬取...");
45        for(;username<=15000;username++) {
46            startTime = System.currentTimeMillis();
47            Spider.create(my).addUrl("http://donghua.dmzj.com/donghua_info/" + username + ".html").thread(5).run();
48            endTime = System.currentTimeMillis();
49            System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒");
50        }
51    }
52}
53

1
2
1        运行的结果为:  
2

WebMagic爬虫入门教程(一)简介

(四)过程:

(1)首先使用谷歌浏览器查看html网页

(2)查找我们想要获取的内容(比如说简介,动画名,制作公司什么的),一般情况下,首先找到我们想要查找的内容,选中点右键点检查,就会跳出如下图右边的一个框框,那里边有你想要的内容,找到不重复的标签就好。

WebMagic爬虫入门教程(一)简介

(3)编写正则语句就好。

希望对你有所帮助!

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

AWStats日志分析系统

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索