虽然Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 "HTTP for Humans",说明使用更简洁方便。
- requests 的底层实现其实就是 urllib
基本GET请求(headers参数 和 parmas参数)
- 最基本的GET请求可以直接用get方法
response = requests.get("http://www.baidu.com/")# 也可以这么写# response = requests.request( "get", "http://www.baidu.com/")
response的常用方法:
- response.text 返回解码后的字符串
- respones.content 以字节形式(二进制)返回。
- response.status_code 响应状态码
- response.request.headers 请求的请求头
- response.headers 响应头
- response.encoding = 'utf-8' 可以设置编码类型
- response.encoding 获取当前的编码
- response.json() 内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
基本POST请求(data参数)
- 最基本post方法
response = requests.post(url=url, data = data)
- url:post请求的目标url
- data:post请求的表单数据
- 传入data数据 对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。
import requestsreq_url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"#分析表单数据formdata = {'i': '老鼠爱大米','from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_CLICKBUTTION','typoResult': 'false',}#添加请求头req_header = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',}response = requests.post(req_url,data = formdata,headers = req_header)#print (response.text)# 如果是json文件可以直接显示print (response.json())
设置代理(proxies参数)
- 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:
import requests# 根据协议类型,选择不同的代理proxies = {"http": "http://12.34.56.79:9527","https": "http://12.34.56.79:9527",}response = requests.get("http://www.baidu.com",proxies = proxies)print(response.text)
什么是XPath?
- XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
什么是XML?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 的标签需要我们自行定义。
- XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
XML 和 HTML 的区别
数据格式 | 描述 | 设计目标 |
---|---|---|
XML | Extensible Markup Language (可扩展标记语言) | 被设计为传输和存储数据,其焦点是数据的内容。 |
HTML | HyperText Markup Language (超文本标记语言) | 显示数据以及如何更好显示数据。 |
HTML DOM | Document Object Model for HTML (文档对象模型) | 通过 HTML DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。 |
最常用的路径表达式:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性。 |
一些路径表达式以及表达式的结果:
路径表达式 | 结果 |
---|---|
bookstore | 选取 bookstore 元素的所有子节点。 |
/bookstore | 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |