1.request的使用:
Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:)
Requests 继承了urllib的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和 POST 数据自动编码。
安装方法(linux):pip3 install requests
GET请求(headers参数和parmas参数):
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参数):
response = requests.post(url=url, data = data)
url:post请求的目标url | data:post请求的表单数据
传入data数据 对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数.
2.正则表达式匹配:
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
Regular Expression的“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,Regular Expression即“描述某种规则的表达式”之意。
目的 给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
(1)给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):
(2)可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式语法支持情况:
正则表达式匹配的规则如下:
XPath选择器:
XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
XPath 开发工具 1.开源的XPath表达式编辑工具:XMLQuire(XML格式文件可用) 2.Chrome插件 XPath Helper 3.Firefox插件 XPath Checker
选取节点 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似
CSS选择器:BeautifullSoup4:
Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。
BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。
Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。使用 pip 安装即可:pip install beautifulsoup4
pyQuery解析器的使用:
PyQuery简介 pyquery相当于jQuery的python实现,可以用于解析HTML网页等。它的语法与jQuery几乎完全相同,对于使用过jQuery的人来说很熟悉,也很好上手。
1、.html()和.text() 获取相应的 HTML 块或者文本内容,
2、(selector):通过选择器来获取目标内容,
3、.eq(index):根据索引号获取指定元素(index 从 0 开始)
4、.find():查找嵌套元素,
5、.filter():根据 class、id 筛选指定元素,
6、.attr():获取、修改属性值,
数据提取JSON与JsonPATH:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1.对象:对象在js中表示为{ }括起来的内容,数据结构为 { key:value, key:value, ... }的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象这几种。
2.数组:数组在js中是中括号[ ]括起来的内容,数据结构为 ["Python", "javascript", "C++", ...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
json模块提供了四个功能:dumps、dump、loads、load,用于字符串 和 python数据类型间进行转换。
1. json.loads():把Json格式字符串解码转换成Python对象
2. json.dumps():实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
3. json.dump() 将Python内置类型序列化为json对象后写入文件
4. json.load() 读取文件中json形式的字符串元素 转化成python类型
Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。