设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3736|回复: 3

写了个大众点评的爬虫脚本, 分享下源码

  [复制链接]

172

主题

398

金钱

605

积分

初级用户

发表于 2016-6-21 16:53:48 | 显示全部楼层 |阅读模式
来源:http://bbs.51cto.com/thread-1400050-1.html

预览源代码
打印

001var keywords = "黄焖鸡米饭";

002var scanUrls = ["http://www.dianping.com/search/keyword/1/0_"+keywords];

003

004var configs = {

005    domains: ["dianping.com"],

006    scanUrls: scanUrls,

007    helperUrlRegexes: ["http://www.dianping.com/search/keyword/\\d+/0_.*"],

008    contentUrlRegexes: ["http://www.dianping.com/shop/\\d+/editmember"],

009    enableProxy: true,

010    interval: 5000,

011    fields: [

012        {

013            name: "shop_name",

014            selector: "//div[contains(@class,\'shop-review-wrap\')]/div/h3/a/text()"

015        },

016        {

017            name: "id",

018            selector: "//div[contains(@class,\'shop-review-wrap\')]/div/h3/a/<a href="http://home.51cto.com/index.php?s=/space/9064958" target="_blank">@href</a>"

019        },

020        {

021            name: "create_time",

022            selector: "//div[contains(@class,\'block raw-block')]/ul/li[1]/span"

023        },

024        {

025            name: "region_name",

026            selector: "//div[@class=\'breadcrumb\']/b[1]/a/span/text()",

027            required: true

028        },

029        {

030            name: "province_name",

031            selector: "//div[@class=\'breadcrumb\']/b[1]/a/span/text()"

032        }

033    ]

034};

035

036configs.onProcessHelperUrl = function(url, content, site) {

037    var urls = extractList(content, "//div[@class=\'tit\']/a[not(contains(@class,\'shop-branch\'))]/<a href="http://home.51cto.com/index.php?s=/space/9064958" target="_blank">@href</a>");

038    for (var i = 0; i < urls.length; i++) {

039        site.addUrl(urls+"/editmember");

040    }

041    var nextPage = extract(content,"//div[@class=\'page\']/a[@class=\'next\']/<a href="http://home.51cto.com/index.php?s=/space/9064958" target="_blank">@href</a>");

042    if (nextPage) {

043        site.addUrl(nextPage);

044        var result = /\d+$/.exec(nextPage);

045        if (result) {

046            var data = result[0];

047            var count = nextPage.length-data.length;

048            var lll = nextPage.substr(0, count)+(parseInt(data)+1);

049            site.addUrl(nextPage.substr(0, count)+(parseInt(data)+1));

050            site.addUrl(nextPage.substr(0, count)+(parseInt(data)+2));

051        }

052    }

053    return false;

054}

055

056configs.afterExtractField = function(fieldName, data, page) {

057    if (fieldName == "id") {

058        var result = /\d+$/.exec(data);

059        if (result) {

060            data = result[0];

061        }

062    }

063    else if (fieldName == "shop_name") {

064        if (data.indexOf("黄焖鸡米饭") == -1) {

065            page.skip();

066        }

067    }

068    else if (fieldName == "create_time") {

069        var result = /\d{2}-\d{2}-\d{2}$/.exec(data);

070        data = "20"+result[0];

071    }

072    else if (fieldName == "province_name" || fieldName == "region_name") {

073        var position = data.indexOf("县");

074        if (position != -1 && position < data.length -1) {

075            data = data.substr(0,position+1);

076        }

077        position = data.indexOf("市");

078        if (position != -1 && position < data.length -1) {

079            data = data.substr(0,position+1);

080        }

081        data = data.replace("餐厅","");

082        if (fieldName == "province_name") {

083            data = getProvinceNameByRegion(data);

084        }

085    }

086    return data;

087}

088

089configs.nextScanUrl = function(url) {

090    var num = /\/(\d+)\//.exec(url);

091    if (num && num[1] < 2323) {

092      num[1]++;

093      return "http://www.dianping.com/search/keyword/"+num[1]+"/0_"+keywords;

094    }

095    else {

096      return null;

097    }

098}

099

100var crawler = new Crawler(configs);

101crawler.start();




爬虫脚本可以在神箭云爬虫框架上运行,对爬虫有兴趣的可以试试,欢迎来交流~

0

主题

24

金钱

235

积分

入门用户

发表于 2017-9-14 20:19:55 | 显示全部楼层
楼主牛   学习学习
回复 支持 反对

使用道具 举报

13

主题

92

金钱

491

积分

入门用户

发表于 2017-11-24 11:20:36 | 显示全部楼层
高手啊,牛逼
回复 支持 反对

使用道具 举报

15

主题

3514

金钱

5018

积分

高级用户

发表于 2018-1-31 17:19:55 | 显示全部楼层
学习了。。顺便薅羊毛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表