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高级应用程序设
计任务,我学习到了很多知识、小细节。

 

 

posted @ 2019-12-18 19:17  scholar-文  阅读(291)  评论(0)    收藏  举报