前言

  机缘巧合,最近在学习机器学习实战,

  本来要用python来做实验和开发环境

  得到一个需求,要爬取大众点评中的一些商户信息,

  于是开启了我的第一个爬虫的编写,里面有好多心酸,主要是第一次。

  我的文章有幸被你看到的话,如果你也是个初学者,希望能让你也学习到一些东西,下面是干货。

需求:

环境:

  1、windows 7 +python2.7.3+BeautifulSoup包

   2、BeautifulSoup是用的最新版,4.x的,在bs4的包中,直接用pip install BeautifulSoup即可安装,前提你得有pip,或者easy_install也可以

   3、这里用到BeautifulSoup,主要是获取爬下来的html文档树,然后提供了一套获取网页数据内容的API,如指定标签属性或内容等。

   4、BeautifulSoup这个东西蛮好用的,但是涉及到一些特别的需求,还是要正则出马,正则我也不熟,有时间还是要专门学一下,共勉。

源码:

 1 # -*- coding: utf-8 -*-
 2 import urllib2
 3 import re
 4 from bs4 import BeautifulSoup
 5
 6 base_url = 'http://www.dianping.com'
 7 url = 'http://www.dianping.com/search/category/1/10/g101r801'
 8 html = urllib2.urlopen(url)
 9 soup = BeautifulSoup(html,"html.parser")
10 flag = 0
11
12 while(url!=None):
13     html = urllib2.urlopen(url)
14     soup = BeautifulSoup(html,"html.parser")
15
16     #餐厅总数
17     Sum = soup.find(attrs={'class':'num'}).string
18     #餐厅名称
19     names = soup.find_all('a',attrs={'data-hippo-type':'shop'})
20     #星级
21     levels = soup.find_all(['span'],attrs={'class':re.compile(r"sml-rank-stars(\s\w+)?")})
22     #评论数
23     nums = soup.find_all('a',attrs={'class':'review-num'})
24     #人均消费
25     prices = soup.find_all('a',attrs={'class':'mean-price'})
26     #菜系区域
27     caixis = soup.select('div[class="tag-addr"] a')
28     #详细地址
29     addrs = soup.find_all('span',attrs={'class':'addr'})
30     #口味、环境、服务评分
31     comments = soup.find_all('span',attrs={'class':'comment-list'})
32     if(flag==0):
33         info = 'Sum: '+ str(Sum).replace('(','').replace(')','') + '\n' + '#########################################'
34
35     for (a,b,c,d,e,f,g) in zip(names,levels,nums,prices,caixis,addrs,comments):
36         info = info +'\n'+'name: '+ str(a.text.encode('gb18030').replace(' ',''))
37         info = info +'\n'+'level: '+ str(b.get('title').encode('gb18030').replace(' ',''))
38         info = info +'\n'+'num: '+ str(c.text.encode('gb18030').replace(' ',''))
39         info = info +'\n'+'price: '+ str(d.text.encode('gb18030').replace(' ',''))
40         info = info +'\n'+'caixi: '+ str(e.text.encode('gb18030').replace(' ',''))
41         info = info +'\n'+'addr: '+ str(f.text.encode('gb18030').replace(' ',''))
42         info = info +'\n'+'comment: '+ str(g.text.encode('gb18030').replace(' ',''))
43         info += '\n'+'#########################################'
44
45     file = open('result.txt','a')
46     file = file.write(info)
47
48     info = ''
49     flag = 1
50
51     url = soup.find('a',attrs={'class':'next','title':'下一页'})
52     if(url!=None):
53         url = url.get('href')
54         url = base_url+str(url)
55
56 print("end")

test.py

结果:

  1 56
  2 #########################################
  3 海神诺富特大酒店海神宫中餐厅
  4 -准四星商户-
  5 147
  6 条点评-
  7 人均
  8 ¥135
  9 -本帮江浙菜-浦东大道728号海神诺富特大酒店4楼-
 10 口味7.3
 11 环境7.6
 12 服务7.5
 13
 14 #########################################
 15 浦江六号
 16 -准五星商户-
 17 90
 18 条点评-
 19 人均
 20 ¥679
 21 -陆家嘴-陆家嘴浦明路1888号6号楼-
 22 口味8.5
 23 环境9.1
 24 服务8.9
 25
 26 #########################################
 27 濱江22號
 28 -五星商户-
 29 40
 30 条点评-
 31 人均
 32 ¥1000
 33 -本帮江浙菜-浦明路1888号黄浦江畔22号楼独栋-
 34 口味8.9
 35 环境8.9
 36 服务8.9
 37
 38 #########################################
 39 上海小南国(正大广场店)
 40 -四星商户-
 41 12086
 42 条点评-
 43 人均
 44 ¥201
 45 -陆家嘴-陆家嘴西路168号正大广场9楼-
 46 口味7.5
 47 环境7.8
 48 服务7.0
 49
 50 #########################################
 51 廊亦舫酒楼(正大店)
 52 -四星商户-
 53 4658
 54 条点评-
 55 人均
 56 ¥156
 57 -本帮江浙菜-陆家嘴西路168号正大广场5楼23号铺-
 58 口味7.3
 59 环境7.6
 60 服务6.9
 61
 62 #########################################
 63 金牌外婆家(上海国金中心店)
 64 -四星商户-
 65 5400
 66 条点评-
 67 人均
 68 ¥88
 69 -陆家嘴-世纪大道8号上海国金中心内LG2层54号-
 70 口味7.7
 71 环境7.9
 72 服务7.8
 73
 74 #########################################
 75 张生记(正大广场店)
 76 -四星商户-
 77 5272
 78 条点评-
 79 人均
 80 ¥159
 81 -本帮江浙菜-陆家嘴西路168号正大广场6楼-
 82 口味7.6
 83 环境8.1
 84 服务7.0
 85
 86 #########################################
 87 春在
 88 -准五星商户-
 89 1214
 90 条点评-
 91 人均
 92 ¥153
 93 -陆家嘴-富城路182号-
 94 口味8.7
 95 环境8.6
 96 服务8.1
 97
 98 #########################################
 99 夏小馆(陆家嘴店)
100 -四星商户-
101 3161
102 条点评-
103 人均
104 ¥86
105 -本帮江浙菜-陆家嘴街道正大广场8楼23号铺-
106 口味7.6
107 环境7.8
108 服务7.8
109
110 #########################################
111 孔乙己尚宴
112 -五星商户-
113 645
114 条点评-
115 人均
116 ¥446
117 -陆家嘴-滨江大道2100-
118 口味9.1
119 环境9.2
120 服务9.0
121
122 #########################################
123 桂花楼
124 -准四星商户-
125 844
126 条点评-
127 人均
128 ¥298
129 -本帮江浙菜-富城路33号香格里拉大酒店浦江楼1楼-
130 口味7.2
131 环境8.0
132 服务7.3
133
134 #########################################
135 爱玲EILEEN(环球金融中心店)
136 -准五星商户-
137 862
138 条点评-
139 人均
140 ¥307
141 -陆家嘴-世纪大道100号环球金融中心3楼-
142 口味8.7
143 环境9.1
144 服务9.0
145
146 #########################################
147 上海小南国(国会店)
148 -四星商户-
149 842
150 条点评-
151 人均
152 ¥223
153 -本帮江浙菜-滨江大道2727号东方滨江大酒店7楼-
154 口味8.0
155 环境8.7
156 服务7.8
157
158 #########################################
159 成隆行蟹王府(金茂店)
160 -五星商户-
161 2091
162 条点评-
163 人均
164 ¥331
165 -陆家嘴-世纪大道88号裙房金茂时尚生活馆6楼-
166 口味9.1
167 环境8.7
168 服务8.9
169
170 #########################################
171 老上海8号餐厅
172 -准四星商户-
173 387
174 条点评-
175 人均
176 ¥185
177 -本帮江浙菜-世纪大道1号东方明珠8号门国际新闻中心1楼-
178 口味7.3
179 环境8.2
180 服务7.2
181
182 #########################################
183 苏浙总会(国金中心店)
184 -准五星商户-
185 1014
186 条点评-
187 人均
188 ¥491
189 -本帮江浙菜-世纪大道8号国金中心4楼L4-13-
190 口味8.5
191 环境9.0
192 服务8.6
193
194 #########################################
195 雍颐庭
196 -准五星商户-
197 460
198 条点评-
199 人均
200 ¥653
201 -陆家嘴-浦东南路111号文华东方酒店LG层-
202 口味8.6
203 环境9.1
204 服务9.1
205
206 #########################################
207 汇尊滨江酒店
208 -准四星商户-
209 525
210 条点评-
211 人均
212 ¥225
213 -本帮江浙菜-滨江大道3528号-
214 口味6.9
215 环境7.4
216 服务6.9
217
218 #########################################
219 上海小南国(国发店)
220 -四星商户-
221 1981
222 条点评-
223 人均
224 ¥180
225 -陆家嘴-浦东南路500号国家开发银行4楼-
226 口味7.6
227 环境7.7
228 服务7.1
229
230 #########################################
231 汉宫
232 -准四星商户-
233 1430
234 条点评-
235 人均
236 ¥122
237 -本帮江浙菜-浦东南路360号新上海国际大厦48楼-
238 口味6.5
239 环境6.5
240 服务6.1
241
242 #########################################
243 上海金茂俱乐部上海餐厅
244 -准五星商户-
245 640
246 条点评-
247 人均
248 ¥510
249 -陆家嘴-世纪大道88号金茂君悦大酒店86楼-
250 口味7.7
251 环境9.0
252 服务8.4
253
254 #########################################
255 四季酒店尚席
256 -五星商户-
257 414
258 条点评-
259 人均
260 ¥467
261 -本帮江浙菜-世纪大道210号酒店2楼-
262 口味8.9
263 环境9.1
264 服务8.5
265
266 #########################################
267 乐新皇朝(国金中心店)
268 -准五星商户-
269 5274
270 条点评-
271 人均
272 ¥111
273 -陆家嘴-世纪大道8号国金中心二期L3-36-
274 口味8.7
275 环境8.6
276 服务8.7
277
278 #########################################
279 老弄堂上海菜
280 -准四星商户-
281 6
282 条点评-
283 人均
284 -
285 -本帮江浙菜-银城西路-
286 口味7.1
287 环境7.1
288 服务7.1
289
290 #########################################
291 克拉哈勃游艇俱乐部
292 -四星商户-
293 23
294 条点评-
295 人均
296 ¥376
297 -陆家嘴-滨江大道4775号-
298 口味7.3
299 环境8.1
300 服务7.6
301
302 #########################################
303 上海本帮菜
304 -准四星商户-
305 9
306 条点评-
307 人均
308 -
309 -本帮江浙菜-浦东大道10号-
310 口味7.0
311 环境6.9
312 服务7.0
313
314 #########################################
315 国泰君安食堂
316 -四星商户-
317 14
318 条点评-
319 人均
320 -
321 -陆家嘴-银城中路168号上海银行大厦B1楼-
322 口味7.7
323 环境7.7
324 服务7.7
325
326 #########################################
327 海上盛宴
328 -准四星商户-
329 71
330 条点评-
331 人均
332 ¥71
333 -粤菜-浦东大道281号东海宾馆2楼-
334 口味7.1
335 环境7.1
336 服务7.1
337
338 #########################################
339 彭氏农家大院(龙虾烧烤)
340 -准四星商户-
341 239
342 条点评-
343 人均
344 ¥76
345 -陆家嘴-浦电路136号-
346 口味7.6
347 环境7.2
348 服务7.0
349
350 #########################################
351 汉宫酒家(银城中路店)
352 -准四星商户-
353 33
354 条点评-
355 人均
356 ¥27
357 -本帮江浙菜-银城中路200号中银大厦6楼-
358 口味7.4
359 环境7.3
360 服务6.7
361
362 #########################################
363 周董好料
364 -三星商户-
365 11
366 条点评-
367 人均
368 ¥32
369 -本帮江浙菜-世纪大道100号环球金融中心B2-
370 口味6.4
371 环境6.7
372 服务6.7
373
374 #########################################
375 银行家俱乐部
376 -准四星商户-
377 86
378 条点评-
379 人均
380 ¥269
381 -陆家嘴-银城中路200号中银大厦银行家俱乐部52楼-
382 口味6.5
383 环境7.2
384 服务6.7
385
386 #########################################
387 香格格(栖霞路店)
388 -准四星商户-
389 153
390 条点评-
391 人均
392 ¥34
393 -本帮江浙菜-栖霞路9号-
394 口味6.4
395 环境6.0
396 服务6.2
397
398 #########################################
399 Freshmind
400 -准四星商户-
401 15
402 条点评-
403 人均
404 ¥17
405 -陆家嘴-杨高南路759号2层04A单元-
406 口味7.1
407 环境7.6
408 服务7.3
409
410 #########################################
411 鲜美100
412 -准四星商户-
413 8
414 条点评-
415 人均
416 -
417 -本帮江浙菜-世纪大道8号国金中心商场-
418 口味7.0
419 环境6.8
420 服务7.0
421
422 #########################################
423 有滋有味家常菜
424 -准四星商户-
425 4
426 条点评-
427 人均
428 -
429 -陆家嘴-崂山二村31号-
430 口味7.3
431 环境7.3
432 服务7.3
433
434 #########################################
435 东方滨江大酒店宴会厅
436 -准四星商户-
437 22
438 条点评-
439 人均
440 -
441 -本帮江浙菜-滨江大道2727号东方滨江大酒店内-
442 口味7.0
443 环境7.0
444 服务7.1
445
446 #########################################
447 徽姑娘乡土菜馆
448 -准四星商户-
449 68
450 条点评-
451 人均
452 ¥45
453 -陆家嘴-栖霞路3号-
454 口味6.4
455 环境6.5
456 服务6.4
457
458 #########################################
459 苏鸿兴汤包馆(浦东大道店)
460 -三星商户-
461 24
462 条点评-
463 人均
464 ¥15
465 -本帮江浙菜-浦东大道136号-
466 口味6.4
467 环境6.5
468 服务6.5
469
470 #########################################
471 汇丰银行食堂
472 -三星商户-
473 3
474 条点评-
475 人均
476 ¥13
477 -陆家嘴-陆家嘴环路1000号汇丰大厦B1楼-
478 口味6.9
479 环境6.7
480 服务6.7
481
482 #########################################
483 阳澄湖大闸蟹
484 -准四星商户-
485 2
486 条点评-
487 人均
488 -
489 -本帮江浙菜-世纪大道100号上海环球金融中心B2F-
490 口味6.4
491 环境6.6
492 服务6.4
493
494 #########################################
495 农家土菜馆
496 -三星商户-
497 8
498 条点评-
499 人均
500 -
501 -本帮江浙菜-栖霞路129号-
502 口味7.1
503 环境6.8
504 服务6.8
505
506 #########################################
507 恋草堂
508 -准四星商户-
509 1
510 条点评-
511 人均
512 ¥22
513 -陆家嘴-浦东大道287号-
514 口味6.8
515 环境6.8
516 服务6.8
517
518 #########################################
519 食尚居
520 -三星商户-
521 10
522 条点评-
523 人均
524 -
525 -本帮江浙菜-浦东大道307号-
526 口味6.5
527 环境6.5
528 服务6.5
529
530 #########################################
531 金世尊大闸蟹(陆家嘴店)
532 -三星商户-
533 3
534 条点评-
535 人均
536 -
537 -陆家嘴-松林路35号-
538 口味6.9
539 环境6.8
540 服务6.9
541
542 #########################################
543 王记小炒
544 -准四星商户-
545 17
546 条点评-
547 人均
548 -
549 -本帮江浙菜-招远路27号-
550 口味7.1
551 环境6.9
552 服务6.7
553
554 #########################################
555 露天海派时尚餐厅(二分店)
556 -准四星商户-
557 2
558 条点评-
559 人均
560 -
561 -陆家嘴-南泉北路35号甲-
562 口味6.9
563 环境6.9
564 服务6.9
565
566 #########################################

result.txt

总结:

  这个例子虽然很简单,但是作为我第一个爬虫程序,还是耗费了我一晚上,包括配置工具,了解一个新的包,以及在安装环境等等一系列问题,弄完的时候我也是已经筋疲力尽了,虽说完成了爬取的功能,但是还是有些问题需要后续再考虑的,还有一个问题是菜系和区域这两个东西有点乱,这是目前没有解决的,因为正则知识太差了,这两个信息的话很难区分开,后面再看看能不能解决吧。

  总的来说,收获还是有的,至少知道了如何在没有预先知识的情况下,从零开始去找资料实现一个不熟悉的东西。

  爬虫这东西应用也很广的,值得学一下,期望在下一份工作中用到这些知识吧。

转载于:https://www.cnblogs.com/jerrybaby/p/5839634.html

python爬虫__第一个爬虫程序相关推荐

  1. Python入门(安装)——第一个爬虫程序(爬取山东各城市天气信息)

    Python爬虫原来可以这么简单,前两天有个朋友让我帮她看一下爬取天气的一段程序有什么问题,这段程序是用Python写的,只是以前听说Python爬虫很厉害,但是不知道自己怎么会没有时间开始.刚好我也 ...

  2. python爬虫、第一个爬虫(基本知识,requests库,BeautifulSoup库,正则表达式re库)

    python爬虫学习开始 1.这是我第一次写博客,表示不太会用csdn的这个编辑器,排版神马的就别说了,有什么值得改进的或者不对的地方,欢迎留言,谢谢. 2.作为学生党,正在自学python爬虫,基于 ...

  3. python if 语句第一个不程序_python小程序1--if语句

    题目: 定义出一个name并提前赋值,如果name是python就打印welcome boss,否则打印name. 代码如下: flae=False name='lill' if name=='pyt ...

  4. python 爬虫《百炼成佛》爬虫入门 (爬虫介绍)第一个爬虫程序

    爬虫<百炼成佛> 爬虫是什么? 爬虫:通过编写程序来获取到互联网上的资源百度 爬虫:通过编写程序来获取到互联网上的资源百度 需求:用程序模拟浏览器.输入一个网址.从该网址中获取到资源或者内 ...

  5. 爬虫小白第一课、从安装python到写出第一个爬虫程序、Pycharm安装详解

    本文原文链接 ↑↑↑ 目录 1什么是python 2怎么安装python 3安装python编辑器 4"写"你的第一个爬虫 5小结 python爬虫现在挺火,一方面全民学pytho ...

  6. python 爬虫软件第一个程序

    19.爬虫 爬虫,又叫做网络爬虫,按照一定的规律,去抓取万维网上的信息的一个程序 爬虫的目的:采集数据 爬虫的分类: 通用的网络爬虫(检索引擎(百度))遵循robots协议 聚焦网络爬虫 增量式网络爬 ...

  7. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档...

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  8. python爬虫从入门到实战笔记——第一章爬虫原理和数据爬取

    爬虫原理和数据抓取 1.1 通用爬虫和聚焦爬虫 通用爬虫 聚焦爬虫 1.2 HTTP和HTTPS HTTP的请求与响应 浏览器发送HTTP请求的过程: 客户端HTTP请求 请求方法 常用的请求报头 服 ...

  9. Python爬虫(第一周)

    目录 一.正则表达式 正则表达式的作用 正则表达式的使用 1.match函数 匹配单个字符(规范字符类型) 匹配多个字符(规范字符数量) 匹配开头和结尾 2.search函数 小案例 3.findal ...

最新文章

  1. ospf路由汇总的目的
  2. Uploadify jquery+falsh+UploadHandler.ashx
  3. js callback回调的一种写法
  4. 协同办公工具解决了什么问题?
  5. squid cache_peer 参数详解
  6. 监管发文:规范大学生群体消费贷款,避免陷入消费贷款陷阱
  7. 在 BT5 下对 Red Hat Enterprise Linux 5.4 的一次***测试
  8. 计算机病毒会不会通过u盘传染,这样会感染病毒吗?
  9. CMD各段定义与分配方法指引
  10. 外设驱动库开发笔记19:BMP280压力温度传感器驱动
  11. cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
  12. Zookeeper 如何选举master 主节点?
  13. 1.7见识一下什么叫Linux驱动:LED
  14. install opencv on mac and use it in xcode
  15. 基于Android系统的IPv6网络接入分析
  16. linux下开通ssh
  17. 韩顺平 jdbc 之 mysql,(韩顺平讲解)jdbc学习(四)---java连接mysql
  18. 6163. 给定条件下构造矩阵——每日一难(phase2_day1)
  19. 关于NoSql的理解,键值数据库,文档数据库,列式存储数据库,图形数据库
  20. ADX趋势线突破交易系统

热门文章

  1. oracle数据库listagg,Oracle 19c 中的 LISTAGG 函数结果去重
  2. Web服务器软件--Servlet入门学习
  3. MySQL卸载和重新安装
  4. 或许我们应该借鉴什么?!团购业者亲历:作为一个糯米团老人,我服美团
  5. iOS中需要查询的设备号, 型号
  6. php隐藏指定id的div,CSS_纯css3显示隐藏一个div特效的具体实现,复制代码代码如下: !DOCTYPE H - phpStudy...
  7. MySQL修改root用户密码
  8. 从零开始部署Guns V4.0 (SpringBoot开源框架)教程
  9. 触控鼠标原理_评论:适用于Windows 7的Microsoft触控鼠标
  10. Php / Thinkphp 之 使用phpqrcode 生成自定义二维码