zoukankan      html  css  js  c++  java
  • 网络爬虫基础练习

    0.可以新建一个用于练习的html文件,在浏览器中打开。

    上课时老师所给的html文件,便于数据爬虫。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>GZCC新闻网</title>
    </head>
    <body>
        <h1>This is the document body</h1>
        <P ID = "p1Node">This is paragraph 1.</P>
        <P ID = "p2Node">段落2</P>
        <a href="http://www.gzcc.cn/">广州商学院</a>
        <li><a href="http://news.gzcc.cn">新闻网</a></li>
        <li><a href="http://news.gzcc.cn"><div style="hight:80px">旧闻网</div></a></li>
        <li>
            <a href="http://news.gzcc.cn/html/2018/xiaoyuanxinwen_0328/9113.html">
                <div class="news-list-thumb"><img src="http://oa.gzcc.cn/uploadfile/2018/0328/20180328085249565.jpg"></div>
                <div class="news-list-text">
                    <div class="news-list-title" style="">我校校长杨文轩教授讲授新学期“思政第一课”</div>
                    <div class="news-list-description">3月27日下午,我校校长杨文轩教授在第四教学楼310室为学生讲授了新学期“思政第一课”。</div>
                    <div class="news-list-info"><span><i class="fa fa-clock-o"></i>2018-03-28</span><span><i class="fa fa-building-o"></i>马克思主义学院</span></div>
                </div>
            </a>
        </li>
    </body>
    </html

    1.利用requests.get(url)获取网页页面的html文件

    import requests

    newsurl='http://news.gzcc.cn/html/xiaoyuanxinwen/'

    res = requests.get(newsurl) #返回response对象

    res.encoding='utf-8'

    2.利用BeautifulSoup的HTML解析器,生成结构树

    from bs4 import BeautifulSoup

    soup = BeautifulSoup(res.text,'html.parser')

    3.找出特定标签的html元素

    soup.p #标签名,返回第一个

    soup.head

    soup.p.name #字符串

    soup.p. attrs #字典,标签的所有属性

    soup.p. contents # 列表,所有子标签

    soup.p.text #字符串

    soup.p.string

    soup.select(‘li')

    4.取得含有特定CSS属性的元素

    soup.select('#p1Node')

    soup.select('.news-list-title')

    5.练习:

    取出h1标签的文本
    取出a标签的链接
    取出所有li标签的所有内容
    取出第2个li标签的a标签的第3个div标签的属性

    取出一条新闻的标题、链接、发布时间、来源

    #coding=utf-8
    import requests
    
    from bs4 import BeautifulSoup
    
    url='http://localhost:63342/workpackage/venv/work.html?_ijt=vjvlm8mjmktirm7uukbpqh4tbl'
    res=requests.get(url)
    res.encoding='UTF-8'
    soup = BeautifulSoup(res.text,'html.parser')
    
    
    # 取出h1标签的文本
    print(soup.h1.text)
    
    #取出a标签的链接
    print(soup.a.attrs['href'])
    
    #取出所有li标签的所有内容
    for i in soup.select('li'):
        print(i.contents)
    
    #取出第2个li标签的a标签的第3个div标签的属性
    print(soup.select('li')[1].a.select('div')[2].attrs)
    
    #取出一条新闻的标题、链接、发布时间、来源
    #1,取标题
    print(soup.select('.news-list-title')[0].text)
    #2.取链接
    print(soup.select('li')[2].a.attrs['href'])
    #3.取发布时间
    print(soup.select('.news-list-info')[0].contents[0].text)
    #4.取来源
    print(soup.select('.news-list-info')[0].contents[1].text)
  • 相关阅读:
    无法重用Linq2Entity Query
    The Joel Test
    MSBuilder directly instead of default VSComplie with keyborad shotcut 原创
    客户端缓存(Client Cache)
    关于代码重构和UT的一些想法,求砖头
    ExtJS2.0实用简明教程 应用ExtJS
    Perl information,doc,module document and FAQ.
    使用 ConTest 进行多线程单元测试 为什么并行测试很困难以及如何使用 ConTest 辅助测试
    史上最简单的Hibernate入门简介
    汽车常识全面介绍 传动系统
  • 原文地址:https://www.cnblogs.com/tiankongyiluozhiwu/p/8671897.html
Copyright © 2011-2022 走看看