|
楼主 |
发表于 2016-12-28 10:31:48
|
显示全部楼层
本帖最后由 jerryxjr1220 于 2016-12-28 10:41 编辑
在真正动手之前,可以先下载一个大众点评的页面,在本地进行爬取练习,如果在本地都能把所要的信息都爬取到了,再切换到网上进行实战。
这样可以提高效率,也便于进行纠错。
比如我先下载了任意的一个页面后,存储为dianping.html
然后用BeautifulSoup和re对我感兴趣的内容进行抓取测试。
- #coding:utf-8
- import re
- from bs4 import BeautifulSoup as bs
- with open('dianping.html','rb') as f:
- html = f.read().decode()
- dianping = bs(html,'lxml')
- allshops = dianping.find_all('div', attrs={'class':'shop-list J_shop-list shop-all-list'})[0]
- shops = allshops.find_all('li')
- for eachshop in shops:
- name = eachshop.h4.string
- shopurl = eachshop.a["href"]
- try:
- star = re.findall('title="(.*)">',str(eachshop.find_all('span')[0]))[0]
- except:
- star = ''
- try:
- cls = re.findall('<span class="tag">(.*?)</span>',str(eachshop.find_all('span')))[0]
- except:
- cls = ''
- try:
- area = re.findall('<span class="tag">(.*?)</span>',str(eachshop.find_all('span')))[1]
- except:
- area = ''
- try:
- addr = re.findall('<span class="addr">(.*?)</span>',str(eachshop.find_all('span')))[0]
- except:
- addr = ''
- try:
- comments = re.findall('<b>(.*?)</b>',str(eachshop.find_all('b')[0]))[0]
- except:
- comments = ''
- try:
- mean = re.findall('<b>(.*?)</b>',str(eachshop.find_all('b')[1]))[0]
- except:
- mean = ''
- try:
- taste = re.findall('<b>(.*?)</b>',str(eachshop.find_all('b')[2]))[0]
- except:
- taste = ''
- try:
- envior = re.findall('<b>(.*?)</b>',str(eachshop.find_all('b')[3]))[0]
- except:
- envior = ''
- try:
- service = re.findall('<b>(.*?)</b>',str(eachshop.find_all('b')[4]))[0]
- except:
- service = ''
-
- print (name,shopurl,star,cls,area,addr,mean,taste,envior,service,comments)
复制代码
输出的结果:
花隐日式怀石料理(上海五角场店) /shop/37765452 五星商户 日本菜 五角场/大学区 淞沪路8号百联又一城7楼 ¥331 9.1 9.2 9.2 4166
将太无二(合生汇店) /shop/45829550 准五星商户 日本菜 五角场/大学区 翔殷路1099号合生汇三层L3-01 ¥173 8.4 8.6 8.8 3457
掌柜的店纯朴中原菜(政通路店) /shop/5712781 四星商户 其他 五角场/大学区 政通路189号万达广场特力时尚屋4楼402号铺 ¥72 7.9 8.2 8.1 7679
A&S牛油果&牛排创意餐吧 /shop/69858430 准五星商户 西餐 五角场/大学区 伟成路68号 ¥92 8.5 9.1 8.9 62
OUTBACK澳拜客(五角场合生汇店) /shop/66964097 四星商户 西餐 五角场/大学区 黄兴路2228号 ¥203 7.7 9.0 8.3 849
喜来稀肉(国定路店) /shop/23972720 准五星商户 韩国料理 五角场/大学区 国定路506号8幢101室 ¥89 9.0 8.7 8.8 3660
Fish’s Fish 鱼就是鱼 /shop/68213232 准五星商户 其他 五角场/大学区 国济路28号2楼 ¥71 8.2 8.7 8.7 224
今日牛事潮汕鲜牛肉火锅(五角场... /shop/32512961 五星商户 火锅 五角场/大学区 黄兴路1766号 ¥123 9.1 9.0 9.1 2077
爱晒蒸汽海鲜主题餐厅 /shop/58638982 准五星商户 海鲜 五角场/大学区 五角场国济路30—16 ¥148 8.8 8.2 8.3 1251
乐韵亚洲餐厅(五角场店) /shop/38163600 准五星商户 东南亚菜 五角场/大学区 国安路758弄29号星汇广场法式风情街 ¥107 8.4 8.7 8.7 263
莱甘地异国料理 /shop/8977492 准五星商户 西餐 五角场/大学区 大学路135号 ¥110 8.2 8.8 8.4 1635
丰收日(五角场店) /shop/2683825 准四星商户 本帮江浙菜 五角场/大学区 四平路2152号1-3楼 ¥146 7.6 7.4 7.0 3099
王品牛排(上海五角场店) /shop/10343688 五星商户 西餐 五角场/大学区 淞沪路8号百联又一城7F ¥378 8.9 9.2 9.1 2383
詹姆士芝士排骨(五角场特力时尚... /shop/32482421 准五星商户 韩国料理 五角场/大学区 政通路189号特力时尚汇1楼16—B ¥92 8.3 8.3 8.7 6982
港欣茶餐厅(合生汇店) /shop/45829445 三星商户 粤菜 五角场/大学区 翔殷路1099号合生广场B1 ¥76 6.5 7.7 7.5 687
八道江山火炉炭烤(武川路店) /shop/24112770 韩国料理 五角场/大学区 武川路49号 ¥80 9.1 9.0 9.1 2669
夜航者吧式串烤餐厅(五角场店) /shop/32573686 准五星商户 烧烤 五角场/大学区 四平路2138号2楼 ¥93 8.4 8.6 8.6 957
独钓寒江砂锅鱼(五角场万达店) /shop/38117025 准五星商户 川菜 五角场/大学区 政通路189号万达广场特力时尚汇3楼 ¥91 8.5 8.4 8.6 1973
海底捞火锅(五角场店) /shop/21274580 五星商户 火锅 五角场/大学区 邯郸路585号苏宁电器五层 ¥129 9.0 9.1 9.2 6894 |
|