Python爬虫入门(一) 网络爬虫之规则

Python爬虫入门(一)

总述

本来早就想学习下python爬虫了,总是找各种借口,一直拖到现在才开始系统的学习。

我用的教程是中国大学MOOC上的由北京理工大学开设的Python网络爬虫与信息提取。

废话不多说,直接开始。

1. requests库入门

1.1 requests库简介

  1. Requests 是唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

  2. 安装 pip install requests

  3. 引入 import requests

  4. 7种常用方法

    requests.request() 构造一个请求,最基础的方法
    requests.get() 获得HTML网页的主要方法,对应于HTTP的GET
    requests.head() 获得HTML网页头的主要方法,对应于HTTP的HEAD
    requests.post() 提交post请求,POST
    requests.put() 提交put请求,PUT
    requests.patch() 提交局部修改请求,PATCH
    requests.delete() 删除请求,DELETE

  5. requests库的get()方法

    r = requests.get(url)
    该语句的意为构造一个向服务器请求资源的Request对象,返回的是一个包含服务器资源的Response对象,用r来接收。

  6. Response对象的属性

    r.ststus_code http请求的返回状态,200为成功
    r.text http响应内容的字符串形式,url对应的页面内容
    r.encoding http header中猜测的编码格式
    r.apparent_encoding http内容中猜测的响应内容的编码格式,备用
    r.content http响应内容的二进制形式

1.2 通用代码框架

  1. Requests库的异常

requests.ConnectionError 网络连接异常
requests.HTTPError http错误异常
requesrs.URLRequired URL缺失异常
requests,ToomanyRedirects 重定向异常,超过最大重定向次数
requests.ConnectTimeOut 连接远程服务器超时异常
requests,Time 请求URL超时,超时异常(包括上述的整个请求过程)

  1. 通用代码框架
import requests


def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '超时异常'


if __name__ == '__main__':
    url = "https://www.baidu.com/"
    print(getHTMLText(url))
 

1.3 HTTP协议及Requests库方法

  1. HTTP协议

    HTTP协议, Hypertext Transfer Protocol, 超文本传输协议。
    是一个基于“请求与响应”模式的、无状态的应用层协议。
    采用URL作为定位网络资源的标识。

  2. URL

    URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
    格式为:http://host[:port][path]
    host: 合法的Internet主机域名或IP地址
    port: 端口号,省略端口为80
    path: 请求资源的路径

  3. HTTP协议对资源的操作

GET:发送一个请求来取得服务器上的某一资源。

HEAD:HEAD和GET是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。

POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。

PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据。

PATCH:向服务器更新数据。

DELETE:删除某一个资源。

  1. HTTP协议方法与requests库方法一致。
posted @ 2020-08-18 11:28  嗯这  阅读(266)  评论(0编辑  收藏  举报