• 理解爬虫原理


    本次作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2881

    1. 简单说明爬虫原理

    程序通过模拟浏览器请求站点,把站点返回的HTML代码、JSON数据、图片视频数据爬到本地,进而提取需要的数据。

    2. 理解爬虫开发过程

       1)浏览器工作原理

    用户输入URL->解析URL->网络连接->服务器相应请求,返回数据->浏览器加载、渲染界面

       2)使用requests库抓取网站数据

    import requests
    url = 'https://v4.bootcss.com/docs/4.0/getting-started/introduction/'
    res = requests.get(url).content.decode('utf-8')
    print(res)

       3)了解网页

    html_sample = '''
    <html> 
        <body> 
              <h1 id = 'title'>崩坏3</h1>
              <div id = 'div1'>原罪深渊</div>
              <div id = 'div2'>苦痛深渊</div>
              <div id = 'div3'>红莲深渊</div>
              <a href="https://www.bh3.com/index.html" class="link"> 官网</a>
        </body> 
    </html> '''

       4)使用Beautiful Soup解析网页

    from bs4 import BeautifulSoup
    soups = BeautifulSoup(html_sample,'html.parser')
    print(soups.h1.text)
    print(soups.select('div'))
    print(soups.select('div')[0].text)
    print(soups.select('#div2')[0].text)
    print(soups.select(".link")[0].text)

    3.提取一篇校园新闻的标题、发布时间、发布单位、作者、点击次数、内容等信息

    import requests
    from bs4 import BeautifulSoup
    from datetime import datetime
    url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0331/11110.html'
    res = requests.get(url)
    res.encoding = 'utf-8'
    #解析html内容
    soups = BeautifulSoup(res.text,'html.parser')
    #获取新闻标题
    title = str(soups.select('title')[0].text).rstrip('- 校园新闻 - 广州商学院新闻网')
    
    info = soups.select('.show-info')[0].text.split()
    print(info)
    retime = info[0] + ' ' +info[1]
    #获取发布时间
    retime = retime.lstrip('发布时间:')
    #发布时间转换成datetime类型
    retime = datetime.strptime(retime,'%Y-%m-%d %H:%M:%S')
    #获取新闻作者
    author = info[2].split('')[1]
    #获取审核
    examine = info[3].split('')[1]
    #获取新闻来源
    source = info[4].split('')[1]
    #获取点击次数,转换点击次数为int类型
    clickUrl = 'http://oa.gzcc.cn/api.php?op=count&id=11110&modelid=80'
    clickStruct = requests.get(clickUrl).text.split('html')[1][2:4]
    clickCount = int(clickStruct)
    #获取新闻内容
    newsContent = soups.select('.show-content')[0].text.strip()
    print('标题:',title,'
    发布时间:',retime,'
    审核:',examine,'
    新闻来源:',source,'
    点击次数:',clickCount,'
    内容:',newsContent,)

  • 相关阅读:
    hdu2818 Building Block
    struct2面试准备
    Spring mvc 面试
    Spring 面试详解
    Java面试必备Springioc上
    redis高级命令4 持久化机制 、事务
    redis高级命令3哨兵模式
    redis高级命令2
    redis高级命令1
    redis基础二----操作set数据类型
  • 原文地址:https://www.cnblogs.com/LinsenLiang/p/10635407.html
Copyright © 2020-2023  润新知