如何完整抓取大众点评网数据

>>> 大众点评网最新完整数据 点击查看 <<<

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

 

如何完整抓取大众点评网数据_第1张图片

 

 

如何完整抓取大众点评网数据_第2张图片

 

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

 

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

 

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

 

如何完整抓取大众点评网数据_第3张图片

 

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

 

如何完整抓取大众点评网数据_第4张图片

 

如果当前分类下的数据条数不超过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

特别说明:该文章为鲲鹏数据原创文章 ,你除了可以发表评论外,还可以转载到你的网站或博客,但是请保留源地址,谢谢!!(尊重他人劳动,你我共同努力)


http://www.site-digger.com/  
西安鲲之鹏网络信息技术有限公司 - 国内最专业Web数据采集服务提供商  
选择我们,所有数据都是你的!  
电话:13389148466(周先生)或   13571845363(齐先生)
QQ:1649677458 或 312602670
Email:[email protected]

你可能感兴趣的:(如何完整抓取大众点评网数据)