Python网络爬虫实习报告.doc

上传人:scccc 文档编号:11314133 上传时间:2021-07-22 格式:DOC 页数:14 大小:158KB
返回 下载 相关 举报
Python网络爬虫实习报告.doc_第1页
第1页 / 共14页
Python网络爬虫实习报告.doc_第2页
第2页 / 共14页
Python网络爬虫实习报告.doc_第3页
第3页 / 共14页
Python网络爬虫实习报告.doc_第4页
第4页 / 共14页
Python网络爬虫实习报告.doc_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Python网络爬虫实习报告.doc》由会员分享,可在线阅读,更多相关《Python网络爬虫实习报告.doc(14页珍藏版)》请在三一文库上搜索。

1、0 / 14 实用精品文档 Python 网络爬虫实习报告 - 0 - / 14 实用精品文档 目录目录 一、选题背景一、选题背景.- 2 - 二、爬虫原理二、爬虫原理.- 2 - 三、爬虫历史和分类三、爬虫历史和分类.- 2 - 四、常用爬虫框架比较四、常用爬虫框架比较.- 5 - 五、数据爬取实战(五、数据爬取实战(豆瓣网爬取电影数据豆瓣网爬取电影数据) .- 6 - 1 分析网页 .- 6 - 2 爬取数据 .- 7 - 3 数据整理、转换 .- 10 - 4 数据保存、展示 .- 12 - 5 技术难点关键点 .- 12 - 六、总结六、总结.- 14 - - 1 - / 14 实用精

2、品文档 一、一、选题背景选题背景 二、二、爬虫原理爬虫原理 三、三、爬虫历史和分类爬虫历史和分类 四、四、常用爬虫框架比较常用爬虫框架比较 ScrapyScrapy 框架框架: :Scrapy 框架是一套比较成熟的 Python 爬虫框架,是使 用 Python 开发的快速、高层次的信息爬取框架,可以高效的爬取 web 页面并提取出结构化数据。Scrapy 应用范围很广,爬虫开发、数 据挖掘、数据监测、自动化测试等。 CrawleyCrawley 框架框架: :Crawley 也是 Python 开发出的爬虫框架,该框架致力 于改变人们从互联网中提取数据的方式。 PortiaPortia 框架

3、框架: :Portia 框架是一款允许没有任何编程基础的用户可视化 地爬取网页的爬虫框架。 newspapernewspaper 框架框架: :newspaper 框架是一个用来提取新闻、文章以及内容 分析的 Python 爬虫框架。 Python-goosePython-goose 框架:框架:Python-goose 框架可提取的信息包括:文章 主体内容;文章主要图片;文章中嵌入的任 heYoutube/Vimeo 视 频;元描述;元标签 五、五、数据爬取实战(豆瓣网爬取电影数据)数据爬取实战(豆瓣网爬取电影数据) - 2 - / 14 实用精品文档 1 分析网页分析网页 # # 获取获取

4、 htmlhtml 源代码源代码 defdef _getHtml():_getHtml(): datadata = = pageNumpageNum = = 1 1 pageSizepageSize = = 0 0 try:try: whilewhile (pageSize(pageSize = 125):125): # # headersheaders = = User-Agent:Mozilla/5.0User-Agent:Mozilla/5.0 (Windows(Windows NTNT 6.1)6.1) AppleWebKit/537.11AppleWebKit/537.11 (KHT

5、ML,(KHTML, likelike Gecko)Gecko) Chrome/23.0.1271.64Chrome/23.0.1271.64 Safari/537.11,Safari/537.11, # # Referer:NoneReferer:None # #注意如果依然不能抓取的话,这里注意如果依然不能抓取的话,这里 可以设置抓取网站的可以设置抓取网站的 hosthost # # # # openeropener = = urllib.request.build_opener()urllib.request.build_opener() # # opener.addheadersope

6、ner.addheaders = = headersheaders urlurl = = + + str(pageSize)str(pageSize) + + &filter=&filter= + + str(pageNum)str(pageNum) # # datahtml%sdatahtml%s % % i i =urllib.request.urlopen(url).read().decode(utf-8)=urllib.request.urlopen(url).read().decode(utf-8) data.append(urllib.request.urlopen(url).re

7、ad().decode(utf-data.append(urllib.request.urlopen(url).read().decode(utf- - 3 - / 14 实用精品文档 8)8) pageSizepageSize +=+= 2525 pageNumpageNum +=+= 1 1 print(pageSize,print(pageSize, pageNum)pageNum) exceptexcept ExceptionException asas e:e: raiseraise e e returnreturn datadata 2 爬取数据爬取数据 defdef _getDa

8、ta(html):_getData(html): titletitle = = # # 电影标题电影标题 #rating_num#rating_num = = # # 评分评分 range_numrange_num = = # # 排名排名 #rating_people_num#rating_people_num = = # # 评价人数评价人数 movie_authormovie_author = = # # 导演导演 datadata = = # # bs4bs4 解析解析 htmlhtml soupsoup = = BeautifulSoup(html,BeautifulSoup(htm

9、l, html.parser)html.parser) forfor lili inin soup.find(ol,soup.find(ol, attrs=class:attrs=class: grid_view).find_all(li):grid_view).find_all(li): title.append(li.find(span,title.append(li.find(span, class_=title).text)class_=title).text) #rating_num.append(li.find(div,#rating_num.append(li.find(div,

10、 - 4 - / 14 实用精品文档 class_=star).find(span,class_=star).find(span, class_=rating_num).text)class_=rating_num).text) range_num.append(li.find(div,range_num.append(li.find(div, class_=pic).find(em).text)class_=pic).find(em).text) #spans#spans = = li.find(div,li.find(div, class_=star).find_all(span)clas

11、s_=star).find_all(span) #for#for x x inin range(len(spans):range(len(spans): # # ifif x x = 2:2: # # passpass # # else:else: # # rating_people_num.append(spansx.string-rating_people_num.append(spansx.string- len(spansx.string):-3)len(spansx.string):-3) strstr = = li.find(div,li.find(div, class_=bd).

12、find(p,class_=bd).find(p, class_=).text.lstrip()class_=).text.lstrip() indexindex = = str.find(str.find(主主) ifif (index(index = -1):-1): indexindex = = str.find(.)str.find(.) print(li.find(div,print(li.find(div, class_=pic).find(em).text)class_=pic).find(em).text) ifif (li.find(div,(li.find(div, cla

13、ss_=pic).find(em).textclass_=pic).find(em).text = 210):210): indexindex = = 6060 # # print(aaa)print(aaa) - 5 - / 14 实用精品文档 # # print(str4:index)print(str4:index) movie_author.append(str4:index)movie_author.append(str4:index) datatitledatatitle = = titletitle #datarating_num#datarating_num = = ratin

14、g_numrating_num datarange_numdatarange_num = = range_numrange_num #datarating_people_num#datarating_people_num = = rating_people_numrating_people_num datamovie_authordatamovie_author = = movie_authormovie_author returnreturn datadata 3 数据整理、转换数据整理、转换 defdef _getMovies(data):_getMovies(data): f f = =

15、 open(F:/douban_movie.html,open(F:/douban_movie.html, w,encoding=utf-8)w,encoding=utf-8) f.write()f.write() f.write(metaf.write(Insertcharset=UTF-8Insert titletitle here)here) f.write()f.write() f.write(f.write(爬取豆瓣电影爬取豆瓣电影) f.write(f.write( 作者:刘文斌作者:刘文斌) f.write(f.write( 时间:时间: + + nowtimenowtime +

16、 + ) f.write()f.write() f.write(tablef.write()align=center) - 6 - / 14 实用精品文档 f.write()f.write() f.write()f.write() f.write(fontf.write(color=green电影电影 ) #f.write(th#f.write(color=green 评分评分) f.write(thf.write(color=green排排 名名) #f.write(th#f.write(color=green 评价人数评价人数) f.write(fontf.write(color=gree

17、n导演导演 ) f.write()f.write() f.write()f.write() f.write()f.write() forfor datadata inin datas:datas: forfor i i inin range(0,range(0, 25):25): f.write()f.write() f.write(tdf.write(%salign:center%s % % datatitlei)datatitlei) # # f.write(tdf.write(%salign:center%s % % datarating_numi)datarating_numi) -

18、7 - / 14 实用精品文档 f.write(tdf.write(%salign:center%s % % datarange_numi)datarange_numi) # # f.write(tdf.write(%salign:center%s % % datarating_people_numi)datarating_people_numi) f.write(tdf.write(%salign:center%s % % datamovie_authori)datamovie_authori) f.write()f.write() f.write()f.write() f.write()f

19、.write() f.write()f.write() f.write()f.write() f.write()f.write() f.close()f.close() ifif _name_name_ = _main_:_main_: datasdatas = = htmlshtmls = = _getHtml()_getHtml() forfor i i inin range(len(htmls):range(len(htmls): datadata = = _getData(htmlsi)_getData(htmlsi) datas.append(data)datas.append(da

20、ta) _getMovies(datas)_getMovies(datas) - 8 - / 14 实用精品文档 4 4 数据保存、展示数据保存、展示 结果如后图所示: 5 技术难点关键点技术难点关键点 数据爬取实战(搜房网爬取房屋数据)数据爬取实战(搜房网爬取房屋数据) - 9 - / 14 实用精品文档 fromfrom bs4 importimport BeautifulSoup importimport requests rep = requests.get() rep.encoding = gb2312gb2312 # 设置编码方式 html = rep.text soup = Be

21、autifulSoup(html, html.parserhtml.parser) f = open(F:/fang.htmlF:/fang.html, ww,encoding=utf-8utf-8) f.write() f.write(metaInsertcharset=UTF-8Insert titletitle herehere) f.write() f.write(新房成交新房成交 TOP3TOP3) f.write(tablealign=center) f.write(房址房址) f.write(成交量成交量) f.write(均价均价) forfor li inin soup.fi

22、nd(ulul,class_=ul02ul02).find_all(lili): name=li.find(divdiv,class_=pbtextpbtext).find(pp).text chengjiaoliang=li.find(spanspan,class_=red-f3red-f3).text trytry: - 10 - / 14 实用精品文档 junjia=li.find(divdiv,class_=ohterohter).find(pp,class_=gray-gray- 99)#.text.replace(O, 平方米) exceptexcept Exception asa

23、s e: junjia=li.find(divdiv,class_=gray-gray- 99)#.text.replace(O, 平方米) f.write(td%scolor=red%s % name) f.write(td%scolor=blue%s % chengjiaoliang) f.write(td%scolor=green%s % junjia) printprint(name) f.write() f.write() - 11 - / 14 实用精品文档 六、总结六、总结 教师评语:教师评语: 成绩:成绩: 指指 - 12 - / 14 实用精品文档 导教师:导教师: 【此课件下载可自行编辑修改,供参考,感谢你的支持!】

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1