zoukankan      html  css  js  c++  java
  • 我的第一个Python爬虫

    一、一些基本的库

    1、requests 库:

    requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装。

    2、requests 库的一些基本函数:

                                                                      requests 库的网页请求函数

    函数 说明
    get(url [, timeout=n]) 对应HTTP的GET方式,设定请求超时时间为n秒
    post(url, data={'key':'value'}) 对应HTTP的POST方式,字典用于传输客户数据
    delete(url) 对应HTTP的DELETE方式
    head(url) 对应HTTP的HEAD方式
    options(url) 对应HTTP的OPTIONS方式
    put(url, data={'key':'value'}) 对应HTTP的PUT方式,字典用于传输客户数据

    get方法,它能够获得url的请求,并返回一个response对象作为响应。

                                                                                     response对象的属性

    属性 说明
    status_code HTTP请求的返回状态
    encoding HTTP响应内容的编码方式
    text HTTP响应内容的字符串形式
    content HTTP响应内容的二进制形式

                                                                                  response对象的方法

    方法 说明
    json()

                     若http响应内容中包含json格式数据, 则解析json数据
    r  aise_for_status()

     
    若http返回的状态码不是200, 则产生异常

    (常见的HTTP状态码:200 - 请求成功,301 - 资源(网页等)被永久转移到其它URL,404 - 请求的资源(网页等)不存在,500 - 内部服务器错误)

    3、BeautifulSoup 库:

    Beautiful Soup是python的一个HTML或XML的解析库,我们可以用它来方便的从网页中提取数据,它拥有强大的API和多样的解析方式。

    二、我的第一个Python爬虫

    1、运用 requests 库的 get() 函数访问 360搜索主页并打印相应的属性:

    import requests
    for i in range(20):
        r=requests.get("https://hao.360.com/")
        r.encoding='utf-8'
        print("第{}次爬取".format(i+1))
        print("返回状态:{}".format(r.status_code))
        print("网页内容的长度:{}".format(len(r.text)))
        print("text 的内容:{}".format(r.text))
        print("content 属性所返回的网页长度:{}".format(len(r.content)))

    运行结果如下图:

     2、利用 BeautifulSoup 对一个简单的 HTML 页面保存为字符串进行操作:

    html 文本为

    html='''<!DOCTYPE html>
    <html>
    <head>
    <meta charset='utf-8'>
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
        <h1>我得第一个标题</h1>
        <p  id="first">我得第一个段落。</p>
    <body>
            <table border="1">
        <tr>
            <td>row 1, cell 1</td>
            <td>row 1, cell 2</td>
        </tr>
        <tr>
            <td>row 2, cell 1</td>
            <td>row 2, cell 2</td>
        </tr>
    </table>
    </html>'''

    从html文本中获取soup:

    from bs4 import BeautifulSoup
    # 这里指定解析器为html.parser(python默认的解析器)
    soup = BeautifulSoup(html,'html.parser')
    printf(type(soup))
    # 输出:<class 'bs4.BeautifulSoup'>

    获取 head 内容:

    print("head 标签内容和学号 后两位:",html.head,'学号后两位 18 ')

    输出为:

    获取 body 标签内容:

    print("body 标签的内容:",soup.body)

    输出为:

    获取 id 为 frist 的标签对象:

    first=soup.select('#first')
    print("first 标签的内容:{}".format(first))
    print(type(first))

    输出为:

    获取 html 页面的中文字符(采用正则表达式):

    import re
    pat=re.compile(r'[u4e00-u9fa5]+')
    result=pat.findall(html)

    输出为:

     

    以上就是我的第一个python爬虫程序。

  • 相关阅读:
    python基础
    用纯css改变下拉列表select框的默认样式兼容ie9需要用js
    如何阻止360浏览器backspace键的默认快捷键
    js判断undefined类型,undefined,null, 的区别详细解析
    jquery事件日历插件e-calendar 的修改
    each和for一起使用
    2019.9.24 网络ip小知识
    数据库SQL开始学习_5
    2019.9.22 java小知识
    数据库SQL开始学习_4
  • 原文地址:https://www.cnblogs.com/nier2b/p/10906759.html
Copyright © 2011-2022 走看看