一、主题式网络爬虫设计方案
1,主题式网络爬虫名称:
爬取猫眼电影TOP100
2,主题式网络爬虫爬取的内容与数据特征分析:
爬取内容为:电影名,得分,
数据特征分析:将其储存于xlsx文件中
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
实现思路:首先进行对网页源代码的访问分析,用BeautifulSoup进行HTML的解析和信息的爬取,后续对爬取下来的信息用pandas进行绘图数据分析
技术难点:爬取信息时对标签的查找,写出查找所需标签的代码,对数据进行相应的分析
二、主题页面的结构特征分析
1.首先是对页面的解析
1 importmatplotlib as mpl2 mpl.use(‘agg‘)3 importrequests4 importre5 importpandas as pd6 importtime7 importseaborn as sns8 sns.set()9 mpl.rcParams[‘font.sans-serif‘]=[u‘SimHei‘]10 mpl.rcParams[‘axes.unicode_minus‘]=False11 defget_one_page(url, headers):12 ‘‘‘
13 抓取单个网页的源码14 ‘‘‘
15 #添加headers参数,伪装成浏览器
16 response = requests.get(url, headers=headers)17 #200意味着成功的请求
18 if response.status_code == 200:19 return response.content.decode(‘utf-8‘)20 returnNone21 #设置猫眼电影TOP100的url
22
23 urls = [‘http://maoyan.com/board/4?offset={0}‘.format(i) for i in range(0, 100, 10)]24
25
26 headers ={27 ‘User-Agent‘: ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36‘
28 }29 #先把所有网页源码爬下来
30 data =[]31 for url inurls:32 tmp = get_one_page(url, headers=headers)33 if not tmp ==None:34 data.append(tmp)35 time.sleep(0.5)36 #查看一下爬取的网页数量是否符合预期
37 print(‘{0} pages crawled‘.format(len(data)))
2.分析节点,打开网址https://maoyan.com/board/4,F12或右键点击检查
三、网络爬虫程序设计
1.数据爬取与采集
1 #利用正则表达式,解析电影名、主演、排名、上映时间、分数数据
2 #使用re.compile将各个正则表达式封装成正则表达式对象,方便后边解析使用。re.S参数是为了让‘.‘能匹配空格。
3 actor_pattern = re.compile(‘s*(.*?)s*
‘, re.S)4 title_pattern = re.compile(‘class="name".*?movieId.*?>(.*?)‘, re.S)5 index_pattern = re.compile(‘.*?board-index.*?>(d+)‘, re.S)6 time_pattern = re.compile(‘(.*?)‘, re.S)7 score_pattern = re.compile(‘(d+).(d+)‘, re.S)89 #使用列表来存储数据
10 indexes =[]11 actors =[]12 titles =[]13 release_times =[]14 scores =[]15
16 #循环解析十个网页,将解析出来的数据附加在对应的列表中
17 for page indata:18 indexes.extend(re.findall(index_pattern, page))19 titles.extend(re.findall(title_pattern, page))20 actors.extend(re.findall(actor_pattern, page))21 release_times.extend(re.findall(time_pattern, page))22 scores.extend(re.findall(score_pattern, page))23 #清洗主演、上映