1、Python 网络爬虫实习报告Python 网络爬虫实习(报告)目录一、选题背景. - 2 -二、爬虫原理. - 2 -三、爬虫历史和分类. - 2 -四、常用爬虫框架比较. - 2 -五、数据爬取实战(豆瓣网爬取电影数据) . - 3 -1 分析网页. -3 -2 爬取数据. -3 -3 数据整理、转换. -4 -4 数据保存、展示. -9 -5 技术难点关键点. -10 -六、总结. - 13 - 12 -一、选题背景二、爬虫原理三、爬虫历史和分类四、常用爬虫框架比较Scrapy 框架:Scrapy 框架是一套比较成熟的 Python 爬虫框架,是使用Python 开发的快速、高层次的信息
2、爬取框架,可以高效的爬取 web 页面并提取出结构化数据。Scrapy 应用范围很广,爬虫开发、数据挖掘、数据监测、自动化测试等。Crawley 框架:Crawley 也是 Python 开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。Portia 框架:Portia 框架是一款允许没有任何编程基础的用户可视化地爬取网页的爬虫框架。newspaper 框架:newspaper 框架是一个用来提取新闻、文章以及内容分析的 Python 爬虫框架。Python-goose 框架:Python-goose 框架可提取的信息包括:文章主体内容;文章主要图片;文章中嵌入的任 heYout
3、ube/Vimeo 视频;元描述;元标签五、数据爬取实战(豆瓣网爬取电影数据)1 分析网页# 获取 html 源代码def getHtml(): data = pageNum = 1 pageSize = 0 try: while (pageSize = 125): # headers = User-Agent:Mozilla/5.0( Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11, # Referer:None #注意如果依然不能抓取的话,这里可以设置抓取网站的
4、host # # opener = urllib.request.build_opener() # opener.addheaders = headers url = + str(pageSize) + &filter= + str(pageNum) # datahtml%s % i =urllib.request.urlopen(url).read().decode(utf-8) data.append(urllib.request.urlopen(url).read().decode(utf- 8) pageSize += 25 pageNum += 1 print(pageSize, p
5、ageNum) except Exception as e: raise e return data 2 爬取数据def getData(html): title = # 电影标题 #rating_num = # 评 分 range_num = # 排 名 #rating_people_num = # 评价人数 movie_author = # 导 演 data = # bs4 解析 html soup = BeautifulSoup(html, html.parser) for li in soup.find(ol, attrs=class: grid_view).find_all(li):
6、 title.append(li.find(span, class_=title).text) #rating_num.append(li.find(div, class_=star).find(span, class_=rating_num).text) range_num.append(li.find(div, class_=pic).find(em).text) #spans = li.find(div, class_=star).find_all(span) #for x in range(len(spans): # if x = 2: # pass # else: # rating_
7、people_num.append(spansx.string-len(spansx.stri ng):-3) str = li.find(div, class_=bd).find(p, class_=).text.lstrip() index = str.find(主) if (index = -1): index = str.find(.) print(li.find(div, class_=pic).find(em).text) if (li.find(div, class_=pic).find(em).text = 210): index = 60 # print(aaa) # pri
8、nt(str4:index) movie_author.append(str4:index) datatitle = title #datarating_num = rating_num datarange_num = range_num #datarating_people_num = rating_people_num datamovie_author = movie_author return data 3 数据整理、转换def getMovies(data): f = open(F:/douban_movie.html, w,encoding=utf-8) f.write() f.wr
9、ite(Insert title here) f.write() f.write(爬取豆瓣电影) f.write(作者:刘文斌) f.write(时间: + nowtime + ) f.write() f.write() f.write() f.write() f.write(电影) #f.write(评分) f.write( 排名) #f.write(评价人数) f.write( 导演) f.write() f.write() f.write() for data in datas: for i in range(0, 25): f.write() f.write(%s % datatitl
10、ei) # f.write(%s % datarating_numi) f.write(%s % datarange_numi) # f.write(%s % datarating_people_numi) 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 range(len(htmls): data = getData(htmlsi) d
11、atas.append(data) getMovies(datas) 4 数据保存、展示结果如后图所示:5 技术难点关键点数据爬取实战(搜房网爬取房屋数据)from bs4 import BeautifulSoup import requests rep = requests.get( ) rep.encoding = gb2312 # 设置编码方式html = rep.text soup = BeautifulSoup(html, html.parser) f = open(F:/fang.html, w,encoding=utf-8) f.write() f.write(Insert ti
12、tle here ) f.write() f.write( 新 房 成 交 TOP3 ) f.write( ) f.write( 房 址 ) f.write( 成 交 量 ) f.write(均价 ) for li in soup.find(ul,class_=ul02).find_all(li): name=li.find(div,class_=pbtext).find(p).text chengjiaoliang=li.find(span,class_=red-f3).text try: junjia=li.find(div,class_=ohter).find(p,class_=gray-9 )#.text.replace(O, 平方米) except Exception as e: junjia=li.find(div,class_=gray-9)#.text.replace(O, 平方米) f.write(%s % name) f.write(%s % chengjiaoliang) f.write(%s % junjia) print(name) f.write() f.write()Python 网络爬虫实习(报告)教师评语:成绩:指导教师:六、总结- 14 -