更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
如何完整抓取大众点评网数据
发布时间:2011-11-04
大众点评网 的列表页最多只能看到前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
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
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。
☹ Disqus被Qiang了,之前所有的评论内容都看不到了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/