Python 网络爬虫实习报告
Python 网络爬虫实习(报告)
- 1 -
目录
一、选题背景 .................................................................................... - 2 -
二、爬虫原理 .................................................................................... - 2 -
三、爬虫历史和分类 ......................................................................... - 2 -
四、常用爬虫框架比较 ..................................................................... - 2 -
五、数据爬取实战(豆瓣网爬取电影数据) ................................... - 3 -
1 分析网页 ......................................................................................... -3 -
2 爬取数据 ......................................................................................... -3 -
3 数据整理、转换 .............................................................................. -4 -
4 数据保存、展示 .............................................................................. -9 -
5 技术难点关键点 ............................................................................ -10 -
六、总结 ......................................................................................... - 13 -
Python 网络爬虫实习(报告)
- 2 -
一、 选题背景
二、 爬虫原理
三、 爬虫历史和分类
四、 常用爬虫框架比较
Scrapy 框架 : Scrapy 框架是一套比较成熟的 Python 爬虫框架,是使用
Python 开发的快速、高层次的信息爬取框架,可以高效的爬取 web页
面并提取出结构化数据。 Scrapy 应用范围很广, 爬虫开发、 数据挖掘、
数据监测、自动化测试等。
Crawley 框架: Crawley 也是 Python 开发出的爬虫框架, 该框架致力于
改变人们从互联网中提取数据的方式。
Portia 框架 : Portia 框架是一款允许没有任何编程基础的用户可视化
地爬取网页的爬虫框架。
newspaper 框架: newspaper 框架是一个用来提取新闻、文章以及内容
分析的 Python 爬虫框架。
Python-goose 框架: Python-goose 框架可提取的信息包括: <1>文章
主体内容 ;<2>文章主要图片 ;<3>文章中嵌入的任 heYoutube/Vimeo 视
频;<4>元描述 ;<5>元标签
Python 网络爬虫实习(报告)
- 3 -
五、数据爬取实战(豆瓣网爬取电影数据)
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 # 注意如果依然不能抓取的话,这里
可以设置抓取网站的 host
# }
# opener = urllib.request.build_opener()
# opener.addheaders = [headers]
url = "https://movie.douban.com/top250?start=" +
str(pageSize) + "&filter=" + str(pageNum)
# data['html%s' %
i ]=urllib.request.urlopen(url).read().decode("utf-8")
Python 网络爬虫实习(报告)
- 4 -
data.append(urllib.request.urlopen(url).read().decode("utf-
8"))
pageSize += 25
pageNum += 1
print(pageSize, pageNum)
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"):