关于我们

深圳市数据动力信息技术有限公司从2012年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有数千个的稳定高匿HTTP代理地址池,可以有效绕过各种反采集策略。

您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。

数据的格式可以是EXCEL,CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。

联系我们

0755-27586035(拨打免费)

15899780267

 61979241或 1033289572

 

点击这里给我发消息

友情链接

当前位置: 首页 > 技术文章 >
如何完整抓取大众点评网数据
发布时间: 来源:数据动力 浏览:7

大众点评网 的列表页最多只能看到前50页(也就是前750条数据,如下图所示)http://www.dianping.com/search/category/17/10/g786

 

 

 

 

因此直接从第二级进入抓取所有的列表页无法获取到所有数据。

 

经过分析发现按照下面的步骤大体上可以抓取到所有的数据:

 

1)进入二级分类的列表页,如下图所示。

 

 

2)如果当前分类下的数据条数大于750,则再依次进入左侧的行政区列表页,行政区这一级的列表条数一般都很少,不会超过750条,如下图所示。

 

 

如果当前分类下的数据条数不超过750,直接抓取所有的列表页即可。

 

 

部分参考代码:

 

if '/shop/' not in url :
            total_num = get_count( html)
            if total_num >  750 :
                # more than 750 records, need going to subcats
                subcats_html = xpath . get( html , '//ul[@class="navBlock navTab-cont navTab-cont-on"]/li/ul/li/ul') or xpath . get( html , '//div[@class="asideContainer"]/ul[2]/li[2]/ul/li[2]/ul')
                if subcats_html :
                    for link in xpath . search( subcats_html , '/li/a/@href' ):
                        link = urljoin( url , link)
                        if link not in found :
                            found . add( link)
                            urls . append( link)
            else :
                # get all list pages
                for link in xpath . search( html , '//div[@class="Pages"]/a/@href' ):
                    link = urljoin( url , link)
                    if link not in found :
                        found . add( link)
                        urls . append( link)
               
                # get all items in this page
                for link in xpath . search( html , '//div[@id="searchList"]/dl/dd//li[@class="shopname"]/a/@href' ):
                    link = urljoin( url , link)
                    if link not in found :
                        found . add( link)
                        urls . append( link)
return urls