Python网络爬虫实习报告-python实习报告
Python 网络爬虫实习陈述之邯郸勺丸创作 目录目录 一、选题布景一、选题布景- 2 -- 2 - 二、爬虫原理二、爬虫原理- 2 -- 2 - 三、爬虫历史和分类三、爬虫历史和分类- 2 -- 2 - 错误!未指定书签。 错误!未指定书签。 分析网页-1- 2 爬取数据-7- 3 数据整理、转换-10- 4 数据保管、展示-12- 5 技术难点关键点-12- 六、总结六、总结- 14 -- 14 - 一、一、选选题布景题布景 二、二、爬爬虫原理虫原理 三、三、爬爬虫历史和分类虫历史和分类 四、四、经经常使用爬虫框架比较常使用爬虫框架比较 Scrapy 框架:Scrapy 框架是一套比较成熟的 Python 爬虫框架,是使用 Python 开 发的快速、高条理的信息爬取框架,可以高效的爬取 web 页面并提取出结构化数 据。Scrapy 应用范围很广,爬虫开发、数据挖掘、数据监测、自动化测试等。 Crawley 框架:Crawley 也是 Python 开发出的爬虫框架,该框架致力于改变人们 从互联网中提取数据的方式。 Portia 框架:Portia 框架是一款允许没有任何编程基础的用户可视化地爬取网页 的爬虫框架。 newspaper 框架:newspaper 框架是一个用来提取新闻、文章以及内容分析的 Python 爬虫框架。 Python-goose 框架:Python-goose 框架可提取的信息包含:文章主体内 容;文章主要图片;文章中嵌入的任 heYoutube/Vimeo 视频;元描述; 元标签 五、数据爬取实战(豆瓣网爬取电影数据)五、数据爬取实战(豆瓣网爬取电影数据) 1 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 = “ + str(pageSize) + “&filter=“ + str(pageNum) # data[ html%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, pageNum) except Exception as e: raise e return data 2 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“): 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_people_num.append(spans[x].string[-len(spans[x].string):-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“) # print(str[4:index]) movie_author.append(str[4:index]) data[ title ] = title #data[ rating_num ] = rating_num data[ range_num ] = range_num #data[ rating_people_num ] = rating_people_num data[ movie_author ] = movie_author return data 3 3 数据整理、转换数据整理、转换 def __getMovies(data): f = open( F://douban_movie.html , w ,encoding= utf-8 ) f.write(““) f.write(“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“ % data[ title ]