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

总结:

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

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

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

时间: 2024-11-09 04:57:36

python爬虫__第一个爬虫程序的相关文章

python 初探,第一个小程序

8-9年前有过一段时间的C语言编程经验,最近接触了一下python,解释性编程语言的结构相较于C语言还是更加方便的. 亲手写的第一个小程序实现的是系统登录功能,同一用户名输错3次密码,将会锁定此帐号. 写的过程中有几点感觉和C语言的差别, 代码行末不需要':'结尾, 程序段是通过相同的缩进,而不是{}.

重学Python - Day 01 - python基础 -> python版本选择+第一个小程序

题外话: Python版本:最新的3.6 安装注意点:勾选添加路径后自定义安装到硬盘的一级目录,例如本人的安装路径: F:\Python 原因:可以自动添加python环境变量,自动关联.py文件,其余的优点很多,例如学习selenium的,使用pip install selenium命令就可以安装selenium 3了,虽然python webdriver的自动化还是2.7居多,但是3.0会是未来 闲言碎语以后再说,现在正式开始学习Python,没办法,不会编程的测试在工作中好吃力,学不会py

Python项目之我的第一个爬虫----爬取豆瓣图书网,统计图书数量

今天,花了一个晚上的时间边学边做,搞出了我的第一个爬虫.学习Python有两个月了,期间断断续续,但是始终放弃,今天搞了一个小项目,有种丰收的喜悦.废话不说了,直接附上我的全部代码. 1 # -*- coding:utf-8 -*- 2 __author__ = 'Young' 3 4 import re,urllib #urllib : 网页访问,返回网页的数据.内容 5 def my_get(ID):# 封装成函数方便调用 6 html = urllib.urlopen("https://r

python爬虫学习第一章

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

python爬虫学习之用Python抢火车票的简单小程序

利用Python制作自动抢火车票小程序,过年再也不要担心没票了! 前言 每次过年很多人都会因为抢不到火车票而回不了家,所以小编利用Python写了一个自动抢火车票的工具,希望大家能抢到火车票,回家过个好年! 我本来想自己写一个练练手的,但是转眼一想,Python 本身最大的优势是什么,不就是有很多牛逼的人已经造好轮子了吗?你只需要知道这些轮子并会使用就行了,这样会节省你大量的精力和时间,而且站在巨人的肩膀上,会看得更远.于是我在 github 上一搜索,果然有不少抢票程序,有的是 Python2

python初体验之小小爬虫

小月月是个懒家伙,博客更新好慢... 前几天拿到某公司的面试题,要求在Linux/Ubuntu/Debian/Suse/Centos下用python2.7开发一个爬虫,抓取百度新闻搜索结果的前三页标题+url. 这可把对python一窍不通的小月月难住了,肿么办呢...哦,最简单有效直接的方法就是网上查资料,ok,go~! 首先感谢http://www.1point3acres.com/bbs/thread-83337-1-1.html跟http://blog.csdn.net/column/d

Python爬虫进阶一之爬虫框架概述

综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优秀的框架,先把这些框架用熟,可以确保能够应付一些基本的爬虫任务,也就是所谓的解决温饱问题,然后再深入学习它的源码等知识,进一步强化. 就个人而言,前一种方法其实就是自己动手造轮子,前人其实已经有了一些比较好的框架,可以直接拿来用,但是为了自己能够研究得更加深入和对爬虫有更全面的了解,自己动手去多做.

我的第一个爬虫

刚好把Python基础篇看完了,发现还是有很多没看懂滴!就想试试写第一个非常简单的爬虫来感受一下 爬虫也就是爬网页的意思,其实就是根据Url来获取它的网页信息,虽然在我们的浏览器看着是排版非常优美.明确.简单的画面,但其实是由伟大的浏览器解释才呈现出来滴,实际上它是一段HTML代码和Java Script.CSS而已 如果把网页比作成一个人,那么HTML则是人的骨架,Java Script则是人身上的各个地方的肌肉,CSS则是它的衣服.裤子.鞋子.所以最重要部分在于HTML(骨架) 在日常上网浏

python安装与第一个程序

python安装与第一个程序 python版本分为2.7和3.6.3版本. windows安装python 1 去官网python.org下载windows版本python.exe 2 根据提示进行安装即可     如何检查是否安装成功?1 打开cmd窗口 2 输入 python 看结果 3 如果报错说python不是一个内部的程序 4 需要打开我的电脑,属性,高级设置,设置环境变量,找到path那行,在后边追加上python的安装目录,保存即可.重启cdm窗口,就好了 5 再次输入 pytho