requests和xpath笔记

Requests库和xpath笔记

Requests安装

pip install requests -i https://mirrors.aliyun.com/pypi/simple

核心函数

  • requests.requests() 所有请求方法的基本方法

    • method:str 指定请求方法, GET, POST, PUT, DELETE
    • url:str 请求的资源接口(API),在RESTful规范中即是URI
    • params:dict, 用于GET请求的查询参数(Query String Params)
    • data:dict, 用于POST/PUT/DELETE请求的表单参数(Form Data)
    • json:dict, 用于上传json数据的参数, 封装到body(请求体)中。请求头的Content-Type默认设置为 application/json
    • files:dict, 结构{'name':file-like-object|tuple},如果是tuple,则有三种情况:
      • ('filename', file-like-object)
      • ('filename', file-like-object, content_type)
      • ('filename', file-like-object, content_type, custom-headers)
        指定files用于上传文件,一般使用POST请求, 默认请求头的Content-Type为multipart/form-data类型
    • headers/cookies:dict
    • proxies:dict, 设置代理
    • auth:tuple, 用于授权的用户名和口令,形式
  • requests.get() 发起GET请求, 查询参数

    • 可用参数
      • url
      • params
      • json
      • headers/cookies/auth
  • requests.post()发起POST请求, 上传/添加数据

    • 可用参数:
      • url
      • data/files
      • json
      • headers/cookies/auth
  • requests.put()发起PUT请求, 修改或更新数据

  • requests.patch() HTTP幂等性的问题,可能会出现重复,不推荐使用

  • requests.delete() 发起delete请求,删除数据

requests.Response

以上的请求方法返回的对象类型是Response,对象常用的属性如下

  • status_code 响应状态码
  • url 请求的url
  • headers:dict, 响应的头,对应于urllib的响应对象的getheaders(), 但不包含cookie
  • cookies:可迭代的对象, 元素是Cookie类对象 (name, value, path)
  • text: 响应的文本信息
  • content: 响应的字节数据
  • encoding:响应数据的编码字符集, 如utf-8, gbk, gb2312
  • json():如果响应数据类型为application/json, 则将响应的数据进行反序列化python得List或者dict对象(javascripte序列化和反序列化是JSON.stringify(obj)和JSON.parse(text))

数据解析方法之xpath

xpath 属于xml/html解析数据的一种方式,基于元素的树形结构(Node > Element)。选择某一元素时,根据元素的路径选择, 如/hmtl/head/title获取<title>标签。安装包pip install lxml

绝对路径

从根标签开始,按照tree结构依次向下查询

/html/body/table/tbody/tr

相对路径

相对路径可以有以下写法

  • 相对于整个文档
//img

查找出文档中所有的<img>标签

  • 相对于当前节点
//table

假如当前节点是<table>,查找他的<img>的路径的写法

.//img

数据提取

  • 提取文本
//title/text()
  • 提取属性
//img/@href
  • 提取指定位置的元素
    获取网页中的数据类型与字符集,获取第一个<meta>标签
//meta[1]/@content

获取最后一个<meta>标签

//meta[last()]/@content

获取倒数第二个<meta>标签

//meta[position()-2]/@content

获取前三个<meta>标签

//meta[position()<3]/@content

指定属性条件

查找class为circle-img<img>标签

//img[@class="circle-img"]

在python 中的应用

安装包pip install lxml

posted @ 2020-08-09 15:45  xcjm  阅读(165)  评论(0)    收藏  举报