webmagic爬取腾讯nba数据
来源:互联网 发布:海康录像机设备域名 编辑:程序博客网 时间:2024/05/29 05:53
package cn.taneroom.webmagic.demo.processor;import java.util.List;import org.apache.commons.collections.CollectionUtils;import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Request;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.processor.PageProcessor;import us.codecraft.webmagic.selector.JsonPathSelector;import us.codecraft.webmagic.utils.HttpConstant;/** * 腾讯NBA数据爬取 * @author TANZHEN553 */public class TencentNbaPageProcessor implements PageProcessor { // 抓取网站的相关配置,包括:编码、抓取间隔、重试次数等 private Site site = Site.me().setRetryTimes(3).setSleepTime(1000); private final String LIST_URL = "http://tags\\.open\\.qq\\.com/interface/tag/articles\\.php\\?callback=tagListCb&p=\\d+&l=\\d+&tag=NBA&oe=gbk&ie=utf-8&source=web&site=sports&_=\\d+"; private final String DETAIL_URL = "http://sports\\.qq\\.com/a/\\d+/\\d+\\.htm"; public Site getSite() { return site; } public void process(Page page) { if (page.getUrl().regex(LIST_URL).match()) { // 匹配列表页 // 获取列表的jsonp数据,并解析得到对应的详情url String rawText = page.getRawText(); rawText = rawText.substring("tagListCb(".length(), rawText.length() - 1); List<String> detailUrls = new JsonPathSelector("$.data.articles[*].url").selectList(rawText); if (CollectionUtils.isNotEmpty(detailUrls)) { for (String detailUrl : detailUrls) { //构造get请求 Request request = createGetRequest(detailUrl); //添加Request对象到URL请求队列 page.addTargetRequest(request); } } } else if (page.getUrl().regex(DETAIL_URL).match()) { // 匹配详情页 String title = page.getHtml().xpath("//div[@class='qq_article']/div[@class='hd']/h1/text()").get(); String content = page.getHtml().xpath("//div[@id='Cnt-Main-Article-QQ']").get(); if (content.length() > 1000) { content = content.substring(0, 1000)+"......"; } System.out.println("标题:\n"+title); System.out.println("内容:\n"+content); } } /** * 创建GET请求的Request对象 * @param url * @return */ private Request createGetRequest(String url){ //构造Request请求对象 Request request = new Request(url); request.setMethod(HttpConstant.Method.GET); return request; } public static void main(String[] args) { int start = 1; int end = 20; Spider.create(new TencentNbaPageProcessor()).addUrl("http://tags.open.qq.com/interface/tag/articles.php?callback=tagListCb&p="+start+"&l="+end+"&tag=NBA&oe=gbk&ie=utf-8&source=web&site=sports&_="+System.currentTimeMillis()).thread(3).run(); }}
阅读全文
0 0
- webmagic爬取腾讯nba数据
- Python爬虫爬取NBA数据
- 【爬虫】WebMagic结合Spring mvc爬取数据进行存储
- 【爬虫】WebMagic结合Spring mvc爬取数据进行存储
- python简单框架实现爬取NBA球员数据
- Python爬虫:用BeautifulSoup进行NBA数据爬取
- 爬取2016-2017赛季NBA球员的数据
- Python3 爬取 NBA 2013-2014 赛季比赛数据
- webmagic整理爬取例子
- webmagic爬取渲染网站
- WebMagic爬取网站内容
- 基于Webmagic的爬取B站用户数据的爬虫
- Elasticsearch系列(十)----使用webmagic爬取数据导入到ES
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- 使用webmagic 爬取天气网站
- 使用webmagic 爬取中关村评论
- webmagic 爬取示例,新手学习
- webmagic爬取职位信息,新手上路
- leetcode题记——Two Sum
- 1057数零壹(进制转换)
- MySQL中join详解
- MySQL 锁机制常用知识点有哪些?
- Flex布局实现圣杯布局和网格布局
- webmagic爬取腾讯nba数据
- Scrapy学习笔记(1)初探Scrapy
- 剑指offer之十一---数值的整数次方
- Java设计模式——组合模式(Composite Pattern)
- Python-Lambda Expression
- js获取指定兄弟元素
- BZOJ刷题集
- redis学习笔记(一)
- hdu 1277 全文检索