Python爬虫之信息匹配和数据解析方式

正则表达式

  • 全局匹配函数表达式
re.compile(正则表达式).findall(源字符串)
  • 匹配模式
方法 说明
re.match 从字符串的起始位置匹配一个模式
re.search 返回第一个成功的匹配
re.compile 编译正则表达式
re.findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 match 和 search 是匹配一次, findall 匹配所有。
re.finditer 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
re.split split 方法按照能够匹配的子串将字符串分割后返回列表
groups() 返回所有括号匹配的字符,以tuple格式
re.sub Python 的re模块提供了re.sub用于替换字符串中的匹配项。
  • 正则表达式语法
方法 说明
普通字符 正常匹配
\n 匹配换行符
\t 匹配制表符
\w 匹配字母、数字、下划线
\W 匹配除字母、数字、下划线
\d 匹配十进制数字 —> [0-9]
\D 配置除十进制数字 —> [^0-9]
\s 匹配空白字符,包括空格、制表符、换页符
\S 匹配除空白字符
[ab89x] 原子表,匹配ab89x中的任意一个
[^ab89x] 原子表,匹配除ab89x以外的任意一个
. 匹配除换行符外任意一个字符
^ 匹配开始的地方
$ 匹配结束的地方
* 前一个字符出现0/1/多次
前一个字符出现0/1次
+ 前一个字符出现1/多次
{n} 前一个字符恰好出现n次
{n,} 前一个字符至少n次
{n,m} 前一个字符至少n次,之多m次
| 模式选择符或
() 模式单元, 通俗来说就是想提取什么内容,就在正则中用小括号将其括起来
  • 默认贪婪模式

贪婪模式:尽可能多的匹配
懒惰模式:尽可能少的匹配,精准模式
如下组合为懒惰模式:(1) *? (2) +?

  • 模式修政符:在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改

re.S 让.也可以匹配多行
re.l 让匹配时忽略大小写

  • 示例
import re

content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}', content)
结果:Hello 123 4567 World_This

XPath表达式

  • 表达式语法
方法 说明
/ 逐层提取
text() 提取标签下面的文本
//标签名** 提取所有名为**的标签
//标签名[@属性=‘属性值’] 提取属性为XX的标签
@属性名 代表取某个属性值
  • 示例
from lxml import etree

parser = etree.HTMLParser(encoding='utf-8')
html = etree.parse("http://www.tianqihoubao.com/", parser=parser)
html = html.xpath('//*[@id="content"]/table[2]')

BeautifulSoup解析

  • 简介

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序,是一个出色的python解释器。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。

  • 匹配语法
方法 说明
bs.title 获取title标签的名称
bs.title.text 获取title标签的内容
bs.title.name 获取title的name
bs.title.string 获取head标签的所有内容
bs.div 获取第一个div标签中的所有内容
bs.div[“id”] 获取第一个div标签的id的值
bs.a 获取a标签
bs.find_all(“a”) 获取所有的a标签
bs.find(id=“u1”) 获取id=“u1”
  • 示例
from bs4 import BeautifulSoup

thisurl = "http://192.168.0.138" 
thisdata = requests.get(thisurl, headers=headers).text
# BeautifulSoup解析初始化
soup = BeautifulSoup(thisdata, 'html.parser')
# 匹配标题
title = soup.h1.text

PyQuery解析

  • 简介

PyQuery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好,和它差不多的还有BeautifulSoup,都是用来解析的。相比BeautifulSoup完美翔实的文档,虽然PyQuery库的文档弱爆了, 但是使用起来还是可以的,有些地方用起来很方便简洁。

  • 示例
from pyquery import PyQuery as pq

doc = pq('https://www.baidu.com')

你可能感兴趣的:(Python,python,正则表达式,xpath)