标签:url spl 知识 gen image 哪些 justify 拼接 app
一,主题式网络爬虫设计方案
1,主题式网络爬虫的名称
1.1豆瓣电影TOP250的爬取
2,主题式网络爬虫的内容与数据特征分析
2.1爬虫的内容
文章标题,评分,评分人数,导演,剧情类别
2.2 数据特征分析
2.2.1对剧情类型,导演做一个词云
2.2.2对评分做一个折线图
3,主题式网络爬虫设计方案概述(包括实现思路和技术难点)
3.1实现思路
创建一个Get类,定义get_url方法用来获取所有的链接,get_alldata()解析网页,get_detail()获取具体的信息。最后实例化一个类。
3.2技术难点
爬取过程中并未遇到阻拦。
二,主题页面的结构特征分析
1,主题页面的特征结构
每页25项数据,共计9页,数据项225.通过F12查看源码发现所需要爬取的数据都是静态的。
2,HTML页面解析
框框中的数据都是需要爬取的字段。
3,节点(标签)查找方法与遍历发法(必要时画出节点数结构)
查找节点的方法采用beautifulsoup的find方法,先确定爬取的数据所在哪个html的节点中,找到这个节点的所有直接子节点,也就是每一个攻略项,再用for循环依次遍历,然后再具体解析遍历的每一项攻略的数据。
三,网络爬虫程序设计
1,爬虫程序主题要包括以下部分,要附源代码及较详解注释,并在每部分程序后面提供输出结果的截图。
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba import seaborn as sns #固定url url_title = "https://movie.douban.com/top250?start=" filter_title = "&filter=" allData = {} #获取全部的网址信息 class Get: #获取所有url def get_url(self): list1 = [] for i in range(0,226,25):#+1才能取到最后一个225 url = url_title+str(i)+filter_title#拼接参数得到完整的url list1.append(url) return list1 #解析出网页 def get_alldata(self,url): user_agent = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36‘ headers = {‘User-Agent‘: user_agent} data = requests.get(url,headers=headers) soup = BeautifulSoup(data.text,‘lxml‘) return soup #获取title等,并存入字典 def get_detail(self,soup): for i in range(0,25): data1 = soup.select(‘div[class="info"]‘)[i] movie_title =data1.find_all("span",class_="title") movie_p =data1.find_all("p") movie_comment =data1.find_all("div",class_="star") data = { ‘Title‘:movie_title[0].get_text(), ‘para‘:movie_p[0].get_text(), ‘comment‘:movie_comment[0].get_text() } allData[data["Title"]] = data return allData # ======================主流程========================= Movie_data = Get() movie_url =Movie_data.get_url() for movie_item in movie_url: movie_soup= Movie_data.get_alldata(movie_item) data = Movie_data.get_detail(movie_soup) df = pd.DataFrame.from_dict(data)#转化成dataframe df = df.T#转置 df.index=range(len(df))#reindex
数据清洗
#数据清洗 df[‘star‘] = df[‘comment‘].apply(lambda i :i.split(‘\n‘)[2]) df[‘comnum‘] = df[‘comment‘].apply(lambda i :i.split(‘\n‘)[4]) del df[‘comment‘] df[‘Title‘]=df[‘Title‘].apply(lambda i :i.split(‘\n‘)[0].strip()) df[‘comnum‘] = df[‘comnum‘].apply(lambda i :i.split(‘人‘)[0].strip()) df[‘para‘]=df[‘para‘].apply(lambda x:x.strip()) df[‘director‘]=df[‘para‘].apply(lambda x:x.split(‘ ‘)[1]) df[‘type‘]=df[‘para‘].apply(lambda x:x.split(‘/‘)[-1]) del df[‘para‘] #存入本地excel writer = pd.ExcelWriter(r‘C:\Users\DATACVG\Desktop\1100\douban.xlsx‘) df.to_excel(r‘C:\Users\DATACVG\Desktop\1100\douban.xlsx‘)
数据可视化
#词云 cut_text = "".join(df[‘type‘]) wordcloud = WordCloud( #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的 font_path="C:/Windows/Fonts/simfang.ttf", #设置了背景,宽高 background_color="white",width=1000,height=880).generate(cut_text) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") plt.show() cut_text = "".join(df[‘director‘]) wordcloud = WordCloud( #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的 font_path="C:/Windows/Fonts/simfang.ttf", #设置了背景,宽高 background_color="white",width=1000,height=880).generate(cut_text) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") plt.show() #================================================= #数据可视化 #柱状图 s =df[‘star‘].value_counts() sns.barplot(x=s.index,y=s) #折线图 x=list(df.index) y=list(df.comnum) plt.figure() plt.plot(x,y)
剧情的词云
导演的词云
评论数量的折线图
评分柱状图
四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
1.1 评分为8.8,8.9分的电影较多
1.2 人们更倾向于剧情片
1.3 福特导演的电影有很高的票房
2.对本次程序设计任务完成的情况做一个简单的小结。
本次作业,对爬虫和数据分析做了个整合,将所学的知识都有用上,感觉很好,期待自己的每一次进步。
标签:url spl 知识 gen image 哪些 justify 拼接 app
原文地址:https://www.cnblogs.com/zhang-li/p/12051493.html