首页 > 编程语言 > 详细

Python高级应用程序设计任务要求

时间:2019-12-18 01:15:10      阅读:104      评论:0      收藏:0      [点我收藏+]

Python高级应用程序设计任务要求


Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)

一、主题式网络爬虫设计方案(15分)

1.主题式网络爬虫名称

名称:爬取腾讯科技体育频道新闻
2.主题式网络爬虫爬取的内容与数据特征分析

本次爬虫主要爬取腾讯科技频道新闻的标题,正文和其他相关信息
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)

本次设计方案主要依靠request库和BeautifulSoup库对腾讯新闻网站访问并采集,最后以txt格式将数据保存在本地。

技术难点主要包括对页面的分析、对数据的采集和对数据的持久化操作。

 

二、主题页面的结构特征分析(15分)

1.页面解析(体育新闻)

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
程序代码# 导入requests库和bs4 库

import requests 

from bs4 import BeautifulSoup

# 获取新闻页面源码的函数
def getNews(url):
    # 判断异常产生
    try:

        r = requests.get(url, timeout=30)

        # 爬取出错的话抛出异常
        r.raise_for_status()

        # 返回页面源码
        return r.text
    except:
        return "爬取页面出现错误,停止爬取"
 

def getContent(html, url):

  soup = BeautifulSoup(html, "html.parser")

    # 获取新闻页面标题
  title = soup.select("div.LEFT > h1")
 
    # 打印查看标题是否爬取
  print(‘新闻标题:‘ + title[0].get_text())

    #  获取新闻编辑作者
    author = soup.select("div.content-article > p.one-p > strong")

    print(‘编辑作者:‘ + author[1].get_text())

    # 新闻正文
    text = soup.select("div.content-article > p.one-p")

    n=0

    for p in text:

        if n > 1:

            print(p.get_text())

        n = n + 1

    # 写入文件
    fo = open("text.txt", "w+", encoding=‘utf-8‘)

    # 写入新闻标题
    fo.writelines(title[0].get_text() + "\n")
 
    # 写入新闻编辑作者
    fo.writelines(author[1].get_text() + ‘\n‘)

    # 用于计数行数 
   n=0
    for p in text:
        if n > 1:  
            fo.writelines(p.get_text() + "\n\n")
           n = n + 1
    # 关闭文件流
    fo.close()
 
def main():
  url = "https://new.qq.com/omn/20191215/20191215A0K94W00.html"

  html = getNews(url),
  
  # 执行爬取函数
   getContent( html,url)
 

# 执行main函数
main()

运行结果:

 技术分享图片

 数据持久化

 技术分享图片

 代码2:

import requests

from bs4 import BeautifulSoup

# 获取体育新闻并存储到文件中


def getNews(url):

    # 爬取过程中可能会出现爬取失败的情况,一旦失败停止爬取
    try:

        r = requests.get(url)

        r.raise_for_status()

        html = r.text

    except:
        return "Error"

    # 使用BeautifulSoup类解析网页源码
    soup = BeautifulSoup(html, "html.parser")

    # 获取新闻标题
    title = soup.select("div.LEFT > h1")

    # 打印新闻标题
    print(title[0].get_text())

    # 获取新闻主题内容
    text = soup.select("div.content-article > p.one-p")
    n = 0
    for p in text:

            if n > 1:

                print(p.get_text())

            n = n + 1

        # 获取txt文件输出流对象

    fo = open("text.txt", "w+", encoding=‘utf-8‘)

    # 将新闻标题写入txt文件中

    fo.writelines(title[0].get_text() + "\n")

    n = 0

    for p in text:

            if n > 1:

                # 将新闻内容按行写入文件

                fo.writelines(p.get_text() + "\n\n")

            n = n + 1

    # 关闭文件输出流,从内存中存入到硬盘

    fo.close()


# 爬取新闻的页面ur路径
url = "https://new.qq.com/rain/a/SPO2019121602087000"

# 执行函数
getNews(url)

 

 

终端运行结果:

 技术分享图片

数据持久化文件text.txt

 技术分享图片

 

四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?

通过对页面结构的分析,可以得到新闻的相关信息。

由于爬取的是新闻内容,新闻内容中没有可以爬取的数值数据,所以未作出数据的可视化操作

 

2.对本次程序设计任务完成的情况做一个简单的小结。

通过这次任务,基本实现使用python把想要的数据爬取下来并且保存在本地,要自己慢慢分析页面结构,一步步的自己操作和平时上课不一样。将中国mooc爬虫教程基本使用

Python高级应用程序设计任务要求

原文:https://www.cnblogs.com/ken32/p/12057273.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!