You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
yihua.huang ca29cd3ef2 add jokejimodel for example 11 years ago
asserts add ui design for avalon 11 years ago
en_docs update version in docs 11 years ago
webmagic-avalon add test for cycleTriedTimes and fix cycleTriedTimes inc error #60 11 years ago
webmagic-core add test for cycleTriedTimes and fix cycleTriedTimes inc error #60 11 years ago
webmagic-extension Change log4j to slf4j #55 11 years ago
webmagic-lucene update version to 0.5.0-snapshot 11 years ago
webmagic-panel update version to 0.5.0-snapshot 11 years ago
webmagic-samples add jokejimodel for example 11 years ago
webmagic-saxon update version to 0.5.0-snapshot 11 years ago
webmagic-scripts update version to 0.5.0-snapshot 11 years ago
webmagic-selenium Merge pull request #57 from d0ngw/master 11 years ago
zh_docs update version in docs 11 years ago
.gitignore The SeleniumDownloader should call the setRawText 11 years ago
.travis.yml add jdk 12 years ago
README.md update contributors 11 years ago
pom.xml add test for cycleTriedTimes and fix cycleTriedTimes inc error #60 11 years ago
release-note.md #34 Close reader in FileCacheQueueScheduler 12 years ago
user-manual.md update version in docs 11 years ago
webmagic-avalon.md scripts readme 12 years ago

README.md

logo

Readme in Chinese

User Manual (Chinese)

Build Status

A scalable crawler framework. It covers the whole lifecycle of crawler: downloading, url management, content extraction and persistent. It can simplify the development of a specific crawler.

Features:

  • Simple core with high flexibility.
  • Simple API for html extracting.
  • Annotation with POJO to customize a crawler, no configuration.
  • Multi-thread and Distribution support.
  • Easy to be integrated.

Install:

Add dependencies to your pom.xml:

	<dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-core</artifactId>
        <version>0.4.2</version>
    </dependency>
	<dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-extension</artifactId>
        <version>0.4.2</version>
    </dependency>

Get Started:

First crawler:

Write a class implements PageProcessor

    public class OschinaBlogPageProcesser implements PageProcessor {

        private Site site = Site.me().setDomain("my.oschina.net")
           .addStartUrl("http://my.oschina.net/flashsword/blog");

        @Override
        public void process(Page page) {
            List<String> links = page.getHtml().links().regex("http://my\\.oschina\\.net/flashsword/blog/\\d+").all();
            page.addTargetRequests(links);
            page.putField("title", page.getHtml().xpath("//div[@class='BlogEntity']/div[@class='BlogTitle']/h1").toString());
            page.putField("content", page.getHtml().$("div.content").toString());
            page.putField("tags",page.getHtml().xpath("//div[@class='BlogTags']/a/text()").all());
        }

        @Override
        public Site getSite() {
            return site;

        }

        public static void main(String[] args) {
            Spider.create(new OschinaBlogPageProcesser())
                 .pipeline(new ConsolePipeline()).run();
        }
    }
  • page.addTargetRequests(links)

    Add urls for crawling.

You can also use annotation way:

	@TargetUrl("http://my.oschina.net/flashsword/blog/\\d+")
	public class OschinaBlog {

	    @ExtractBy("//title")
	    private String title;

	    @ExtractBy(value = "div.BlogContent",type = ExtractBy.Type.Css)
	    private String content;

	    @ExtractBy(value = "//div[@class='BlogTags']/a/text()", multi = true)
	    private List<String> tags;

	    public static void main(String[] args) {
	        OOSpider.create(
	        	Site.me().addStartUrl("http://my.oschina.net/flashsword/blog"),
				new ConsolePageModelPipeline(), OschinaBlog.class).run();
	    }
	}

Docs and samples:

The architecture of webmagic (refered to Scrapy)

image

Javadocs: http://code4craft.github.io/webmagic/docs/en/

There are some samples in webmagic-samples package.

Lisence:

Lisenced under Apache 2.0 lisence

Contributors:

Thanks these people for commiting source code, reporting bugs or suggesting for new feature:

Thanks:

To write webmagic, I refered to the projects below :

Mail-list:

https://groups.google.com/forum/#!forum/webmagic-java

Bitdeli Badge