python爬虫__第一个爬虫程序

前言

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

  本来要用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

 

总结:

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

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

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

 

posted @ 2016-09-04 16:24  Wenism  阅读(9779)  评论(0编辑  收藏  举报