1、Python网络爬虫实习报告Python 网络爬虫实习报告一、 选题背景 -2 -二、 爬虫原理 -2 -三、 爬虫历史和分类 -2 -四、 常用爬虫框架比较 -2 -五、 数据爬取实战(豆瓣网爬取电影数据) -3 -1分析网页 3-2爬取数据 3-3数据整理、转换 -4-4数据保存、展示 -9 -5技术难点关键点 -10 -六、 总结 -13 -选题背景二、 爬虫原理三、 爬虫历史和分类四、 常用爬虫框架比较Scrapy框架:Scrapy框架是一套比较成熟的Python爬虫框架,是使用Python开发的快速、高层次的信息爬取框架,可以高效的爬取 web页 面并提取出结构化数据。Scrapy应
2、用范围很广,爬虫开发、数据挖掘、 数据监测、自动化测试等。Crawley框架:Crawley也是Python开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。Portia框架:Portia框架是一款允许没有任何编程基础的用户可视化 地爬取网页的爬虫框架。newspaper框架:newspaper框架是一个用来提取新闻、文章以及内容 分析的Python爬虫框架。Python-goose框架:Python-goose框架可提取的信息包括:1文章 主体内容;2文章主要图片;3文章中嵌入的任heYoutube/Vimeo视 频;4元描述;5元标签五、数据爬取实战(豆瓣网爬取电影数据)1分
3、析网页#获取html源代码def _getHtml():data =pageNum = 1pageSize = 0try:while (pageSize = 125):# headers = User-Age nt:Mozilla/5.0 (Win dowsNT6.1) AppleWebKit/537.11 (KHTML, like Gecko)Chrome/23.0.1271.64 Safari/537.11,# Referer:No ne # 注意如果依然不能抓取的话,这里可以设置抓取网站的host# # ope ner = urllib.request.build_ope ner()#
4、ope ner.addheaders = headersurl = +str(pageSize) + & filter= + str(pageNum)# datahtml%s %i =urllib.request.urlope n( url).read().decode(utf-8)data.appe nd(urllib.request.urlope n( url).read().decode(utf-8)pageSize += 25pageNum += 1prin t(pageSize, pageNum)except Excepti on as e:raise ereturn data2爬取
5、数据def _getData(html):title = #电影标题#rati ng_num = # 评分range_num = # 排名#rati ng_people_ num = # 评价人数movie_author = # 导演data = # bs4 解析 htmlsoup = BeautifulSoup(html, html.parser)for li in soup.find(ol, attrs二class: grid_view).fi nd_all(li):title.appe nd(li.fi nd(spa n, class_=title).text)#rati ng_nu m
6、.appe nd(li.fi nd(div,class_=star).fi nd(spa n, class_=rat ing_nu m).text)range_nu m.appe nd(li.fi nd(div,class_=pic).fi nd(em).text)#spa ns = li.fi nd(div,class_=star).fi nd_all(spa n)#for x in ran ge(le n( spa ns):# if x )f.write( In sert title here)f.write()f.write( 爬取豆瓣电影 v/h1)f.write( 作者:刘文斌 v/
7、h4)f.write( 时间:” + nowtime + v/h4)f.write(vhr)f.write()f.write(vthead)f.write()f.write( 电影v/fon t)#f.write(评分 v/fon t)f.write( 排名 )#f.write(评价人数 )f.write( 导演)f.write()f.write()f.write()for data in datas:for i in ran ge(0, 25):f.write()f.write(%s % datatitlei)# f.write(vtd style=color:blue;text-align
8、:center%s % datarati ng_nu mi)f.write(%s % datara nge_nu mi)# f.write(%s % datarati ng_people _nu mi)f.write(%s % datamovie_authori)f.write()f.write()f.write()f.write()f.write()f.write()f.close()if _name_ = _main_:datas =htmls = _getHtml()for i in ran ge(le n(htmls): data = _getData(htmlsi) datas.ap
9、pe nd(data)_getMovies(datas)4数据保存、展示结果如后图所示:电影排名导演1弗兰克-德拉邦特Frank Darabont2陈凯歌Kaine Chen3吕克-贝楼Luc Besson| 4Robert Zemeckis| 5罗伯托贝尼尼Roberto Bemuni召宮崎骏 Hayao Miyazaki7史蒂文斯皮尔怕格Steven Spielberg8借姆斯卡梅隆James Cameron9克里斯托弗诺兰Christopher Nc Ian10安德鲁斯坦顿Andrew Staiitcn11未塞佩托纳多雷Giuseppe Tomato| 12拉库马希拉尼Rajkuniar
10、 Hiratii| B莱塞霍駅斯道姆Lasse Hallstrom克里斯托夫巴拉帶Christophe Bairratier| 15刘镇伟Jef&ey Lau弗朗西斯福特-科披检Francis Ford Coppola宫崎骏 Hayao Miyazaki| 18彼得威尔Pder Weir19维克多弗莱明Victor Fleming养治库克Gearce Cukor20苗东赫 Dcmg-hyuik Hwang触不可及21異:刹维那卡什Olivier Nakache艾力克托兰达Erie Toledano天堂电影院22朱塞佩托納多雷Giuseppe Tcmatcre23加布里尔-穆奇诺Gabnele
11、Muccuio24刘伟强丿劇瞬星际穿越25克里斯托弗诺兰Christopher Nolan5技术难点关键点数据爬取实战(搜房网爬取房屋数据)from bs4 import BeautifulSoupimport requestsrep = requests.get( http:/ newhouse.fa ) rep.e ncodi ng = gb2312 # 设置编码方式soup = BeautifulSoup(html,html = rep.texthtml.parser )f = open( F:/fang.html , w , encoding 二utf-8 )f.write( )f.w
12、rite( Insert title herev/head )f.write( )f.write( vh1 新房成交 TOP3v/center)f.write( vtable border二1px width二1000px height二800pxalig n=ce nter )f.write( vh2 房址 )f.write( 成交量 )f.write( 均价 )for li in soup.find( ul , class_ =ul02 ).find_all( li):name=li.find( div , class_ =pbtext ).find( p ).textchengjiaol
13、iang=li.find( span , class_ =red-f3 ).texttry : junjia=li.find( div , class_ =ohter ).find( p , class_ 二gray-9)#.text.replace( ? O,平方米)except Exception as e:junjia=li.fi nd(div , class_ =gray-9 ) #.text.replace(O,平方米)f.write( %sv/td % n ame)f.write( %sv/td % che ngjiaolia ng)f.write( %sv/tdv/tr % junjia)print (name)f.write( )f.write( )六、总结教师评语:成绩:指导教师: