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/details/why-bug.html两篇文章的主人的分享,好程序猿肯定会找到女盆友滴~!(*^__^*)

ok,废话暂停,赶紧把我的python体验成果摆出来~


 1 # -*- coding: utf-8 -*-
2
3 import urllib2
4 import string
5 from bs4 import BeautifulSoup
6 import re
7 import sys;
8 reload(sys);
9 sys.setdefaultencoding(‘utf8‘);
10
11 #--------定义函数news2,参数query为查询字符串,用于返回搜索结果------
12 def bd_news(query):
13 title = ‘‘
14 for i in range(0, 3): #用for进行循环控制,要获取前三页信息,结合url特点,则对象集合为range(0,3)
15 #根据分析出的百度新闻搜索结果的url特点,构造请求url
16 url=‘http://news.baidu.com/ns?word=‘+query+‘&pn=‘ + str(i * 20)+‘&cl=2&ct=1&tn=news&rn=20&ie=utf-8&bt=0&et=0&rsv_page=1‘
17
18 #f=open(‘123.html‘,‘a‘)#该语句跟下面的f.write/f.close语句加起来,可以将搜索出的页面保存在123.html文件中
19 #建立连接请求,并将服务器返回的页面信息赋值给response,再对response调用read方法,返回html页面
20 response = urllib2.urlopen( url )
21 doc = response.read()
22 #f.write(doc)
23 #f.close()
24
25 #对doc进行BeautifulSoup处理,生成一个soup对象
26 soup = BeautifulSoup(doc)
27
28 #搜索soup对象中所有含h3标签且属性calss="c-title"的标签,并将其返回给paper_names
29 paper_names = soup.html.body.find_all(‘h3‘, {‘class‘ : ‘c-title‘})
30 #将正则表达式编译成Pattern对象实例pat1,其中,href前面的r表示是“原始字符串”
31 pat1 = re.compile(r‘href="([^"]*)"‘)
32 for paper_name in paper_names:
33 title += paper_name.text
34 #将paper_name转换成字符串,并在其中搜索pat1所表示的正则表达式.当返回MatchOdject对象实例时,表示搜索成功
35 h = pat1.search(str(paper_name))
36 #用group()方法处理h返回的MatchOdject对象,1表示返回该参数所对应的的字符串
37 href = h.group(1)
38 title += ‘\n‘+href
39 title += ‘\n‘
40
41 print title
42 # 打开文件123.txt,参数a表示往里面添加
43 f = open(‘123.txt‘,‘w+‘)
44 # 对象file的write方法将字符串title写入file中
45 f.write(title)
46 # 关闭文件
47 f.close()
48
49
50 #--------------begin------------------------
51
52 print u"""#-------------------------------------------------
53 # 程序:百度新闻爬虫
54 # 作者:xiaoyueyue
55 # 日期:2014/05/05
56 # 语言:Python 2.7
57 # 实现功能:抓取百度新闻搜索结果前三页的新闻标题+url,并保存为文本文件存储在本地
58 #-------------------------------------------------
59 """
60
61 print u‘请输入搜索字符串(如:pyhton):‘
62 inquery = str(raw_input(u‘ ‘))
63
64 #-------------函数调用---------------------
65
66 bd_news(inquery)

咳咳,注释好像有点多,这样跟我一样是小白的小伙伴们就不用担心看不懂啦!

接下来说说我遇到的问题吧,其实有点不太记得了..

1.BeautifulSoup模块安装

下载地址:http://www.crummy.com/software/BeautifulSoup/bs4/download/

windows下安装步骤:

(1)将下载的压缩包解压,放在python安装目录下(我下载的是4-4.3.0版本)

(2)打开命令提示符,进入beautifulsoup4-4.3.0文件夹所在目录。(形如:X:XX/python2.7/beautifulsoup4-4.3.0>)

(3)执行安装命令:python setup.py build

   
   python setup.py install

至此,beautifulsoup模块安装完成。

(4)在使用时,用from bs4 import BeautifulSoup引入即可。

2.如何提取标题跟url信息。

BeautifulSoup使用文档地址:http://www.crummy.com/software/BeautifulSoup/bs4/doc/

不知道你看了感觉怎么样,反正我就是一个字:晕死了!所以我还是直接依靠广大网友去鸟~~

最开始我用的是paper_names = soup.html.body.find(‘h3‘, {‘class‘ :
‘c-title‘}).text这条语句,结果发现只能输出第一条标题。然后将find改为find_all也不对,最后经过大师指点迷津,才知道自己错在哪儿了,立马改正,然后就看到想要的结果了!href同理。

特此附上BeautifulSoup中文文档地址,

http://wenku.baidu.com/link?url=F0ChXwBXFbgf9wMobCp5a4zyh0gzpEtW2I5NnSicc2mb-m559hy5Cbs0u5ua7WlN_y5S3k5BvTHkbXvDOKxWtoBQEJTdO4C4hNLNzYfCtlK

3.自我检讨

程序发过去了才想起人家要求是在Linux下开发,开始我为了操作简单,想着等在windows下开发完了再在Linux下重复一遍,然后...尼玛最后愣是忘记了!!小月月蹲墙角哭去了...

python初体验之小小爬虫

时间: 2024-11-10 13:10:58

python初体验之小小爬虫的相关文章

ipython及Python初体验

阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一.Python环境体验 1.常见Python编辑器介绍 1.在linux下使用vim 编辑Python脚本时,推荐--没有道理-- 2.Eclipse 3.notepad++:挺好用的一款编辑工具 4.IDLE (官方自带)交互式的开发语言集成环境 5.pycharm  第三方的工具:ipython

Python初体验

本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语

python初体验--我对python的体会

接触了python已经两周了,从一个程序小白发展到了对python有了一些简单的认识,虽然以前学过一些c语言,但是能感觉出来python与c之间的差别很大,python的计算能力比c要高得多,而且各种包使python使用起来非常方便,这可以让我们再平时可以利用python制作一些小的程序来计算一些问题,使学这门语言有了更多实用性.而且上课老师为我们展示python通过arduino制作温度计算和bim指数,并且通过数据绘画出图形化界面,利用其中的函数把数据做成图表使我更加感兴趣,感觉这些实验很有

VS Code python初体验笔记

之前一直都是使用Notepad++来编写Python代码,后来想起来之前查资料的时候有个VS Code可以编写一些的脚本语言(js,node.js)甚至是高级编程语言(C#,PHP,JAVA,Python等)而且这是微软自家写的,这就引起我的浓烈兴趣了,查了下VS Code发现这东西不错,而且广受程序员的喜爱,不仅能够在windows上运行编写的程序,而且还能在Mac,linux平台上运行,并且开源(这从侧面说明了微软的巨大改变,其开源力度真是前所未见,我很期待微软的开源框架asp.net co

Python初体验之基础语法(二)

所有测试语句基于Python 2.7.6 , Ubuntu 14.04 LTS 自学Python,如果哪里说的不对,还请指正.谢谢. 示例绝大部分来自博客园vamei的python教程 1.文件读写操作 一. 按字节读取文件 #!/usr/bin/env python #coding=UTF-8 #默认python编码是ASCII编码 要支持中文 #加上coding=UTF-8的声明 # open()打开文件 r只读 w写入 a追加 r+ w+ a+模式 # a+方式打开文件 指针指向结尾 ,

stackless python初体验

stackless python真是毁三观,算斐波那契数列,n为100000(十万),运行时间2.2秒左右 这里写一下感悟: stackless python从字面上理解就是没有栈的python,怎么做到没有栈呢?基于堆栈的语言是怎么实现的: 1.一般将函数的调用推进栈里面,后入栈单元计算完之后,先入栈的才能够完成 2.栈里面的单元怎么通信呢?今天刚好做完DDos攻击的实验,提醒我了这点:栈的单元通过入口地址和返回地址与它的前后单元通信. 3.栈的厚度有限制,貌似是1000多,就是说,迭代到10

第三节 Hello world --python初体验

祭旗--hello world 据说简单优雅.功能强大是python的魅力所在,这里看到简单了,优雅是什么样的,接下来的学习中慢慢体会吧! 1 print ("Hello world") 数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种:整数型.浮点型.

python 初体验

微博那边的程序媛计划的python课程. 烧烤了一个弱智机器人. 完全用对话推进的一个聊天,为了它更像一个活人把训练选项隐藏了,可能只适合自己玩(远目) 有BADEND线,再琢磨琢磨感觉自己可以写个avg游戏了(远目) 就问问windows写python只能这么反人类吗- - 1 #coding:utf-8 2 #!/usr/bin/env python 3 # 4 # str=raw_input(unicode('你要显示的中文','utf-8').encode('gbk')); 5 impo

Python初体验之基础语法(四)

所有测试语句基于Python 2.7.3 , Ubuntu 12.04 自学Python,如果哪里说的不恰当,还请指正.谢谢. 示例绝大部分来自博客园vamei的python教程 1.循环对象 #!/usr/bin/env python #coding=UTF-8 #包含一个next()方法 每次循环调用next() #直到StopIteration异常出现 停止调用next()方法 f = open('test.txt') for line in f: print line #生成器 自定义一