微信网站界面设计,创建网站的目的是什么原因,网络公司有哪些职位,html网页制作视频每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中#xff0c;对于爬虫有兴趣的伙伴可以订阅专栏一起学习#xff0c;完全免费。 键盘为桨#xff0c;代码作帆。这趟为期30天左右的Python爬虫特训即将启航#xff0c;每日解锁新海域#xff1a;从Requests库的… 每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中对于爬虫有兴趣的伙伴可以订阅专栏一起学习完全免费。 键盘为桨代码作帆。这趟为期30天左右的Python爬虫特训即将启航每日解锁新海域从Requests库的浪花到Scrapy框架的深流从反爬迷雾中的破局到数据清洗的澄澈。我们拆解网页结构如同解读星图让XPath与正则表达式化作导航罗盘。每个深夜的代码调试终将凝结成破晓时的数据宝藏。训练营不设码头结营之日正是你独自远征星辰大海的起点。 文章目录
一、 提取数据
规则
二. 正则表达式相关注解
1 数量词的贪婪模式与非贪婪模式
2 常用方法
3. 正则表达式修饰符 - 可选标志 一、 提取数据
在前面我们已经搞定了怎样获取页面的内容不过还差一步这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢下面就开始介绍一个十分强大的工具正则表达式 正则表达式是对字符串操作的一种逻辑公式就是用事先定义好的一些特定字符、及这些特定字符的组合组成一个“规则字符串”这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式是用来匹配字符串非常强大的工具在其他编程语言中同样有正则表达式的概念Python同样不例外利用正则表达式从返回的页面内容提取出想要的内容就易如反掌了。
规则
模式描述$匹配字符串的末尾.匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符[...]用来表示一组字符,单独列出[amk] 匹配 am或k[^...]不在[]中的字符[^abc] 匹配除了a,b,c之外的字符re*匹配0个或多个的表达式^匹配字符串的开头re匹配1个或多个的表达式re?匹配0个或1个由前面的正则表达式定义的片段非贪婪方式re{ n} re{ n,}精确匹配n个前面表达式re{ n, m}匹配 n 到 m 次由前面的正则表达式定义的片段贪婪方式ab(re)G匹配括号内的表达式也表示一个组(?-imx)正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域(?imx)正则表达式包含三种可选标志i, m, 或 x 。只影响括号中的区域(?: re)类似 (...), 但是不表示一个组(?imx: re)在括号中使用i, m, 或 x 可选标志(?-imx: re)在括号中不使用i, m, 或 x 可选标志(?#...)注释(? re)前向肯定界定符。如果所含正则表达式以 ... 表示在当前位置成功匹配时成功否则失败。但一旦所含表达式已经尝试匹配引擎根本没有提高模式的剩余部分还要尝试界定符的右边。(?! re)前向否定界定符。与肯定界定符相反当所含表达式不能在字符串当前位置匹配时成功(? re)匹配的独立模式省去回溯\w匹配字母数字及下划线\W匹配非字母数字及下划线\s匹配任意空白字符等价于 [\t\n\r\f].\S匹配任意非空字符\d匹配任意数字等价于 [0-9]\D匹配任意非数字\A匹配字符串开始\Z匹配字符串结束如果是存在换行只匹配到换行前的结束字符串。c\z匹配字符串结束\G匹配最后匹配完成的位置\b匹配一个单词边界也就是指单词和空格间的位置。例如 er\b 可以匹配never 中的 er但不能匹配 verb 中的 er\B匹配非单词边界。er\B 能匹配 verb 中的 er但不能匹配 never 中的 er\n, \t, 等.匹配一个换行符。匹配一个制表符。等\1...\9匹配第n个分组的内容\10匹配第n个分组的内容如果它经匹配。否则指的是八进制字符码的表达式[\u4e00-\u9fa5] 中文
二. 正则表达式相关注解
1 数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串 Python里数量词默认是贪婪的在少数语言里也可能是默认非贪婪总是尝试匹配尽可能多的字符非贪婪的则相反总是尝试匹配尽可能少的字符
例如正则表达式”ab”如果用于查找”abbbc”将找到”abbb”。而如果使用非贪婪的数量词”ab?”将找到”a”
2 常用方法
* re.match re.match 尝试从字符串的起始位置匹配一个模式如果不是起始位置匹配成功的话match() 就返回none 函数语法 re.match(pattern, string, flags0) * re.search re.search 扫描整个字符串并返回第一个成功的匹配。 函数语法 re.search(pattern, string, flags0) * re.sub re.sub 替换字符串 re.sub(pattern,replace,string) * re.findall re.findall 查找全部 re.findall(pattern,string,flags0)
3. 正则表达式修饰符 - 可选标志 正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志 修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别locale-aware匹配re.M多行匹配re.S使 . 匹配包括换行在内的所有字符re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \Bre.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解