Python高级应用程序设计任务要求
用Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)
一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
名称:爬取电影天堂最新影片信息
2.主题式网络爬虫爬取的内容与数据特征分析
本次爬虫主要爬取电影天堂最新影片信息
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
本次设计方案主要依靠request库访问网站,用BeautifulSoup获取数据,并且将数据保存在本地txt文件中。
技术难点主要包括对页面结构分析、对数据的采集以及数据的持久化。
二、主题页面的结构特征分析(15分)
1.最新电影列表页面结构分析
https://www.dytt8.net/html/gndy/dyzz/index.html
.co_content8内为列表
.tbody 主体
.ulink电影标题(链接)
devTool中的下载地址,但是实际源代码中并不是这样的。
三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.获取最新电影列表
程序代码:
#getList def getList(_url): try: #伪装成用户访问 kv = {'user-agent':'Mozilla/5.0'} #获取目标页面 r = requests.get(_url, headers=kv) #判断页面是否链接成功 r.raise_for_status() #使用GBK编码 r.encoding = 'gbk' #返回页面内容 return r.text except: #爬取失败 return "爬取出错"
运行结果:
2.获取电影内容信息
程序代码:
def getInfo(_url): ''' 获取最新电影内容页 @return: r.text ''' try: #伪装UA kv = {'user-agent':'Mozilla/5.0'} #获取目标页面 r = requests.get(_url, headers=kv) #判断页面是否链接成功 r.raise_for_status() #使用GBK编码 r.encoding = 'gbk' #返回页面内容 return r.text except: #爬取失败 return "爬取出错" # 解析页面数据并返回 def parseInfo(html): ''' 获取电影名和内容页链接 @html @return down_url ''' soup = BeautifulSoup(html, 'html.parser') down_url = '' #td-bgcolor for table in soup.find_all('td', attrs={"bgcolor": "#fdfddf"}): down_url = table.get_text() return down_url
运行结果:
3.存储数据
程序代码:
def keepData(ulist): try: #创建文件夹 os.mkdir("C:\dytt") except: #如果文件夹存在则什么也不做 "" try: #创建文件用于存储爬取到的数据 with open("E:\\file\\new_move_list.txt","w") as file: for i in range(len(ulist)): file.write(ulist[i]) file.write('\n') except: "爬取出错"
运行结果:
四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
通过观察页面结构,分析出每一块电影的源码都是由tr标签进行包裹,所以只需要找到tbody之后遍历其中的tr标签即可获取每部电影的电影信息,
通过分析电影标题的a标签href的属性,即可获取每部电影的唯一ID值,通过URL和ID值的拼接值可以获取电影详细页面的链接,通过这次的爬虫,
我学到了如何爬取电影的详细信息,还学会了如何数据持久化的了解。
2.对本次程序设计任务完成的情况做一个简单的小结。
虽然在写这一程序时,我发现在遇到一些极端情况时,运行结果会出错,但是我通过自己的虚心学习和想同学的请教,我都一一克服了这些问题。通
过这次任务,对python相关知识更熟悉,通过对页面结构的一步步分析,实现了对电影天堂最新电影的信息采集。通过这次python高级应用程序设
计任务,我学习到了很多知识、小细节。