使用webmagic 爬取天气网站
来源:互联网 发布:最新网络流行语段子 编辑:程序博客网 时间:2024/06/11 10:18
在WebMagic里,实现一个基本的爬虫只需要编写一个类,实现PageProcessor接口即可。这个类基本上包含了抓取一个网站,你需要写的所有代码。
该例子使用webmagic爬取天气网上杭州的历史天气数据,使用Jsoup解析页面,代码如下:
package com.yelling.weather.spider;import java.util.List;import org.apache.commons.lang.StringUtils;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;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;import us.codecraft.webmagic.selector.Selectable;public class WeatherRepoPageProcessor implements PageProcessor { // 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等 private Site site = Site.me().setRetryTimes(3).setSleepTime(1000); private String [] tit = {"最高气温:\t","最低气温:\t","天气:\t","风向:\t","风力:\t"}; public void process(Page page) { // 部分二:定义如何抽取页面信息,并保存下来 String url = page.getUrl().toString(); //System.out.println(url); if(!url.endsWith("index.html")&&url.endsWith("html")){ Html html = page.getHtml(); //获取城市名 String city = html.xpath("//*[@id=\"tool_site\"]/div[1]/h3").toString(); city = city.substring(city.indexOf(">") + 1, city.indexOf("20")); //System.out.println(city); String content = html.toString(); Document docList = Jsoup.parse(content); //定位到class Elements es = docList.getElementsByClass("tqtongji2"); //定位到ul Elements UlTag = es.get(0).getElementsByTag("ul"); for (int j = 1; j < UlTag.size(); j++) { Element obj = UlTag.get(j); Elements LiTag = obj.getElementsByTag("li"); Element li1 = LiTag.get(0); //获取某日天气详情链接 String ss = li1.getElementsByTag("a").get(0).html(); System.out.println(city+"\t"+ss); //获取每个li标签数据 for(int i = 1;i<LiTag.size();i++){ System.out.println(tit[i-1]+LiTag.get(i).html()); } System.out.println("*******************"); // System.out.println(LiTag.html()); } } // 部分三:从页面发现后续的url地址来抓取 //爬取杭州历年的天气数据 page.addTargetRequests(page.getHtml().links().regex("http://lishi\\.tianqi\\.com/[a-z]+/[\\d]+\\.html").all()); page.addTargetRequests(page.getHtml().links().regex("http://lishi\\.tianqi\\.com/hangzhou/index\\.html").all()); } public Site getSite() { return site; } public static void main(String[] args) { //添加种子url,并打开5个线程开始爬虫 Spider.create(new WeatherRepoPageProcessor()).addUrl("http://lishi.tianqi.com").thread(5).run(); }}
运行结果:
0 0
- 使用webmagic 爬取天气网站
- webmagic爬取渲染网站
- WebMagic爬取网站内容
- 使用webmagic 爬取中关村评论
- webmagic整理爬取例子
- webmagic 爬取示例,新手学习
- webmagic爬取职位信息,新手上路
- webmagic爬取腾讯nba数据
- Elasticsearch系列(十)----使用webmagic爬取数据导入到ES
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- 使用WebMagic爬新浪博客
- python爬取天气数据
- Python爬取天气信息
- webmagic是个神奇的爬虫(二)-- webmagic爬取流程细讲
- 利用WebMagic的Cookie机制进行页面爬取
- 【爬虫】WebMagic结合Spring mvc爬取数据进行存储
- WebMagic爬取论坛链接实现流程分析
- 基于webmagic爬取并下载百度图片
- 使用ListView更新数据一直闪烁的解决办法
- bzoj 3670 kmp
- android中ListView多次刷新重复执行getView的解决方法
- numpy 矩阵的用法
- 严重:Error configuring application listener of class org.springframework.web.context.ContextLoaderList
- 使用webmagic 爬取天气网站
- Git 基本操作
- 获取界面传值
- sql语句update中多个case/when的写法
- Java并发编程:Lock
- Android--面试中遇到的问题总结(三)
- 系统到底需不需要升级?
- BZOJ1984——月下“毛景树”
- appium在mac上的配置