WebMagic爬虫入门教程(一)简介
来源:互联网 发布:sql语句update语句 编辑:程序博客网 时间:2024/06/04 00:33
(一)前言
工作学习中,需要进行爬虫。百度百科上说,网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
网络爬虫,我是这样理解的,简单说,就是下载web网页上的html代码中的信息。
那么到底用什么语言爬虫呢?python不太熟,不过听说很不错,自己也在网上下载了一个python爬取贴吧的代码,很是不错,很简洁,也很快,地址为:http://www.cnblogs.com/fnng/p/3576154.html。
不过python语言毕竟不太熟,虽然python爬虫网络功能强大,比较方便模拟登陆、以及解析javascript ,写起起程序来很是便捷,只有网页解析这个劣势,不过我还是没有用它。
我使用的是java语言来爬虫,初学者才开始学习,没有什么经验,也就没有使用httpclient这些工具直接url爬虫,而是使用了国内的开源爬虫框架webmagic框架来爬虫。
(二)简介
webmagic是一个国内的java开源爬虫框架,它采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化等),也支持多线程抓取、分布式抓取,并支持自动重试、自定义UA/cookie等功能。
对初学者而言,webmagic包含页面抽取功能,很方便使用,初学者可以使用css selector、xpath和正则表达式进行链接和内容的提取,支持多个选择器链式调用。
(三)webmagic的java爬虫
不废话了,直接上代码。
maven依赖:
<dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.7.3</version></dependency><dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-extension</artifactId> <version>0.7.3</version></dependency>
java代码:
package Webmagic.donghua.dmzj.com;/***Created by mo *On 2017/10/30 ***15:36. ******/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;public class DmzjProcessor implements PageProcessor { int myid = 0; int size =10; // 抓取网站的相关配置,可以包括编码、抓取间隔1s、重试次数等 private Site site = Site.me().setCharset("utf8").setRetryTimes(1000).setSleepTime(1000); @Override public Site getSite() { return site; } @Override public void process(Page page) { Html html = page.getHtml(); size++; String hahawebname = html.xpath("//div[@class=\"odd_anim_title_tnew\"]/div[@class=\"tvversion\"]/a/span[@class=\"anim_title_text\"]/h1/text()").get();//得分 String goal = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"anim_score_info\"]/span[@class=\"points_text\"]/text()").get();//得分 String mentotalold = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"score_statistics\"]/span[@id=\"score_count_span\"]/text()").get();//人数 String mentotal = mentotalold.replaceAll("人评分",""); String content = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescshort\"]/text()").get();//内容 String contentdetail = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescall\"]/text()").get();//内容 String url = "http://donghua.dmzj.com/donghua_info/"+size+".html"; System.out.println("hahawebname: "+ hahawebname); System.out.println("goal: "+goal); System.out.println("mentotal: "+ mentotal); System.out.println("content: "+ content); System.out.println("url: "+ url); System.out.println("contentdetail: "+ contentdetail);} public static void main(String[] args) { int username = 10; DmzjProcessor my = new DmzjProcessor(); long startTime, endTime; System.out.println("开始爬取..."); for(;username<=15000;username++) { startTime = System.currentTimeMillis(); Spider.create(my).addUrl("http://donghua.dmzj.com/donghua_info/" + username + ".html").thread(5).run(); endTime = System.currentTimeMillis(); System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒"); } }}运行的结果为:
(四)过程:
(1)首先使用谷歌浏览器查看html网页,比若说打开:http://donghua.dmzj.com/donghua_info/10.html
(2)查找我们想要获取的内容(比如说简介,动画名,制作公司什么的),一般情况下,首先找到我们想要查找的内容,选中点右键点检查,就会跳出如下图右边的一个框框,那里边有你想要的内容,找到不重复的标签就好。
(3)编写正则语句就好。
希望对你有所帮助!
阅读全文
1 0
- WebMagic爬虫入门教程(一)简介
- Java爬虫(webmagic)
- webmagic是个神奇的爬虫(一)--如何创建webmagic项目
- java使用webmagic实现网络爬虫功能(一)
- WebMagic爬虫入门教程(二)一个完整的爬取动漫之家的实例
- Webmagic网络爬虫(JAVA)
- Java爬虫框架:WebMagic一(入门)
- webmagic爬虫
- webmagic爬虫
- WCF入门教程(一)简介
- python爬虫系列(一):爬虫简介
- 使用WebMagic爬虫框架及javaEE SSH框架将数据保存到数据库(一)
- WebMagic简明教程(一)
- webmagic爬虫程序
- WebMagic/JMX&爬虫监控
- WebMagic 爬虫框架学习
- java 爬虫框架 webmagic
- webmagic爬虫使用
- Android自定义View基础之Canvas、Paint介绍
- 容器set和map的使用
- 简单的SSO登陆系统
- 接口测试
- Python学习_3——>list和tuple
- WebMagic爬虫入门教程(一)简介
- vi/vim下如何修改,并保存只有只读权限的文件
- shell 函数返回值问题
- 给编程生涯充电的 10 本书
- android media库中external的读取
- jsp之有标签体的标签、带参数的标签
- 15.5 Content-Encoding:内容编码
- 前端调用后台接口的几种方式
- boost和c++11创建线程的区别