1、聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(generalpurpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 1.2编程设计目及思路1.2.1编程设计目的 学习了解并熟练掌握python的语法规则和基本使用,对网络爬虫的基础知识进行了一定程度的理解,提高对网页源代码的认知水平,学习用正则表达式来完成匹配查找的工作,了解数据库的用途,学习mongodb数据库的安装和使用,及配合python的工作。1.2.2设计思路
2、(1) 以世纪佳缘网为例,思考自己所需要的数据资源,并以此为基础设计自己的爬虫程序。(2) 应用python伪装成浏览器自动登陆世纪佳缘网,加入变量打开多个网页。(3) 通过python的urllib2函数进行世纪佳缘网源代码的获取。(4) 用正则表达式分析源代码,找到所需信息导入excel。(5) 连接数据库,将爬下的数据存储在数据库中。1.3本编程设计应达到的要求 1、对特定的网站爬取特定的数据; 2、实现代码和得到结果; 3、能够和数据库进行连接,将爬下的数据存储在数据库中。 4、将爬下的数据储存在excel中方便编辑。2 编程设计方案2.1爬取方案2.1.1所需爬取的数据以世纪佳缘网为
3、例,所需要爬取的数据为注册世纪佳缘网的人的用户名、真实姓名、性别、年龄、学历、月收入这些直观信息。2.1.2用python获取世纪佳缘网的源代码爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它 进行进一步的处理。因此,准确地理解URL对理解网络爬虫至关重要。URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL的格式由三部
4、分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的主机IP地址(有时也包括端口号)。第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分用“:/”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。例如:其计算机域名为;超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。Python获取网页源代码可用urllib或urllib2函数进行,极其方便快捷,代码如下:importurllib2response=urllib2.urlopen(htm
5、lresponse.read()print2.1.3应用python伪装成浏览器自动登陆世纪佳缘网,加入变量打开多个网页。 有了源代码就可以进行数据的爬取了,但是因为世纪佳缘网近日进行了改版,简单的爬虫程序已经无法在对其进行全网页的爬取工作了,所以,在获取数据之前,需要对爬虫进行一下伪装,使其成为一个浏览器,以实现全网页的爬取工作。 应用opener和header的基础知识即可实现伪装成浏览器这一步骤。在伪装的同时,需要加入变量来打开多个网页,是的爬取工作可以顺利进行。代码如下:r=0w=3013while 3012w(.*?)/.+?>/h2.+?/b/s.+?/sp.+?, re.D
6、OTALL) 2.2存储方案 2.2.1储存在excel表格中 Excel表格具有方便筛选、查找和编辑的特点,所以将网络爬虫爬取的数据储存在excel表格中是首选。 使用python建立excel表格是十分容易,代码如下:filename = xlwt.Workbook ()sheet = filename.add_sheet(name) 建立完成后可将数据写入excel表格: for a in x: sheet.write(r,0,a0.decode(utf-8) sheet.write(r,1,a1.decode( sheet.write(r,2,a2.decode( sheet.writ
7、e(r,3,a3.decode( sheet.write(r,4,a4.decode( sheet.write(r,5,a5.decode( r=r+1 print r+3012 filename.save(test3.xls 2.2.2储存在数据库中 数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。将数据储存在数据库中也具有直观简洁的特点。 Python调用数据库是用pymongo模块,创建与导入代码如下:db = pymongo.Connection().testfor a in x: values=dict( img=a0.deco
8、de(), infor=a1.decode( age=a2.decode( adress=a3.decode( marry=a4.decode( ) db.user.insert(valuesvalues) content = db.user.find() for a in x: print img:+a0.decode(infor:+a1.decode(age:+a2.decode(adress:+a3.decode(marry:+a4.decode(3、 总结 本程序利用了python语言编写网络爬虫程序,实现了从世纪佳缘网上爬取用户数据资料,使用urllib函数以及re模块、pymong
9、o模块进行源代码的获取、编辑和数据的导出,并针对网页代码中无性别显示的问题,采取爬取注册用户信息同时爬取注册用户照片地址的方式解决,浏览所爬取信息时,只需将照片地址输入浏览器地址栏,即可得到所查看用户上传的自拍照,得到形象信息。总的来说程序设计简便、实用性强、便于读取和再利用。4、附录4.1将爬取数据储存在excel表格4.1.1 源代码#coding=gbkimport reimport xlwtimport cookielibimport urllib,urllib2#, re.DOTALL) html=op.read() x=find_re.findall(html) 4.1.2 爬取数据汇总截图4.2将爬取数据写入数据库4.2.1 源代码import urllibimport pymongow=11while 1020: page=urllib.urlopen( html=page.read() x=find_re.findall(html)4.2.2 爬取数据汇总截图参考文献(1) Guido van rossum Python手册(2) Magnus Lie Hetlar python基础教程(3) 罗刚 ,王振东 自己动手写网络爬虫
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2