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

 

總結:

  這個例子雖然很簡單,但是作為我第一個爬蟲程序,還是耗費了我一晚上,包括配置工具,了解一個新的包,以及在安裝環境等等一系列問題,弄完的時候我也是已經筋疲力盡了,雖說完成了爬取的功能,但是還是有些問題需要后續再考慮的,還有一個問題是菜系和區域這兩個東西有點亂,這是目前沒有解決的,因為正則知識太差了,這兩個信息的話很難區分開,后面再看看能不能解決吧。

  總的來說,收獲還是有的,至少知道了如何在沒有預先知識的情況下,從零開始去找資料實現一個不熟悉的東西。

  爬蟲這東西應用也很廣的,值得學一下,期望在下一份工作中用到這些知識吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM