阿里云爬虫项目课程笔记【1】:正则表达式 与 XPath表达式

Python网络爬虫快速入门到精通
课程地址


正则表达式

import re

re.compile(正则表达式).findall(原始字符串)
字符匹配
普通字符正常匹配
\n换行符
\t制表符
\w字母、数字、下划线
\W非字母、数字、下划线
\d十进制数字
\D非十进制数字
\s空白字符
\S非空白字符
[abc123]原子表,abc123中的任意一个
[^abc123]原子表,除abc123外的任意一个字符
.任意一个字符(不包括换行符)
^开始位置
$结束位置
*前一个字符出现 0\1\多 次,默认贪婪
?前一个字符出现 0\1 次
+前一个字符出现 1\多 次,默认贪婪
*?懒惰模式
+?懒惰模式
{n}前一个字符出现 n 次
{n,}前一个字符至少出现 n 次
{n,m}前一个字符至少出现 n 次,之多出现 m 次
|模式选择符 或
()模式单元,最终提取到的内容
re.S使 . 可以匹配多行
re.I匹配时忽略大小写

例子:

贪婪模式
源字符串:“pythonpython”
正则表达式: “p.*y”
结果:[‘pythonpy’]

懒惰模式
源字符串:“pythonpython”
正则表达式: “p.*?y”
结果:[‘py’, ‘py’]

源字符串:“Python”
正则表达式: “pyt”
匹配方式: re.compile(“pyt”, re.I).findall(“Python”)
结果:[‘Pyt’]



XPath 表达式

表达式含义
/逐层提取
text()提取标签下的文本
//标签名*提取所有名为*的标签
//标签名[@属性=‘属性值’]提取属性为属性值的标签
@属性名代表取某个属性值

例子:

from lxml import etree
data = '''
<html>
    <head>
      <title>主页</title>
    </head>

    <body>
      <p>abc</p>
      <p>bbbvb</p>
      <a href="a.com/v/detail1" target="_top">推荐1</a>
      <a href="a.com/v/detail2" target="_top">推荐2</a>
      <div class="jas" data-type="dr">
          <div id="official">
              明月几时有
          </div>
      </div>
    </body>
</html>
'''

html = etree.HTML(data)
html.xpath('/html/head/title/text()')

表达式:/html/head/title/text()
结果:‘主页’

表达式://p/text()
结果:[‘abc’, ‘bbbvb’]

表达式://div[@id=‘official’]/text()
结果:‘明月几时有’

表达式://a/@href
结果:[‘a.com/v/detail1’, ‘a.com/v/detail2’]



其他小节笔记

阿里云爬虫项目课程笔记【2】:Urllib模块 与 糗事百科爬取实战
阿里云爬虫项目课程笔记【3】:腾讯视频评论实战
阿里云爬虫项目课程笔记【4】:Requests 模块 与 云栖社区博文爬虫实战
阿里云爬虫项目课程笔记【5】:Scrapy 模块 与 当当爬虫实战
阿里云爬虫项目课程笔记【6 - 8】:招聘信息、淘宝网商品信息 与 知乎 爬虫实战
阿里云爬虫项目课程笔记【9 & 10】常见的反爬策略与反爬攻克手段、腾讯漫画爬取实战 与 分布式爬虫

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值