zoukankan      html  css  js  c++  java
  • 【Python3网络爬虫开发实战】3.1.1-发送请求

    【摘要】使用urllib的request模块,我们可以方便地实现请求的发送并得到响应,本节就来看下它的具体用法。

    1. urlopen()

    urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理授权验证(authenticaton)、重定向(redirection)、浏览器Cookies以及其他内容。

    下面我们来看一下它的强大之处。这里以Python官网为例,我们来把这个网页抓下来:

    import urllib.request
    response = urllib.request.urlopen('https://www.python.org')
    print(response.read().decode('utf-8'))

    运行结果如图3-1所示。

    3-1.png

    图3-1 运行结果

    这里我们只用了两行代码,便完成了Python官网的抓取,输出了网页的源代码。得到源代码之后呢?我们想要的链接、图片地址、文本信息不就都可以提取出来了吗?

    接下来,看看它返回的到底是什么。利用type()方法输出响应的类型:

    import urllib.request
    
    response = urllib.request.urlopen('https://www.python.org')
    print(type(response))

    输出结果如下:

    <class 'http.client.HTTPResponse'>

    可以发现,它是一个HTTPResposne类型的对象。它主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed等属性。

    得到这个对象之后,我们把它赋值为response变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。

    例如,调用read()方法可以得到返回的网页内容,调用status属性可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。

    下面再通过一个实例来看看:

    import urllib.request
     
    response = urllib.request.urlopen('https://www.python.org')
    print(response.status)
    print(response.getheaders())
    print(response.getheader('Server'))

    运行结果如下:

    200
    [('Server', 'n

    来源:华为云社区  作者:崔庆才丨静觅

  • 相关阅读:
    常用网络操作命令
    C语言中的位域[转]
    状态机——一种强大的思想利器
    9030PCI CAN驱动开发点滴
    驱动开发中应该注意的事项
    java 从网络Url中下载文件
    windows pyspider 爬虫安装
    java list去重
    Java 文件分块及合并
    工程部署到linux
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165808.html
Copyright © 2011-2022 走看看