python爬虫学习笔记(一)

python 网络爬虫简介和表达式基础

一. 网络爬虫

网络爬虫是什么?

网络爬虫是一种互联网信息的自动化采集程序
主要作用是代替人工对互联网中的数据进行自动采集和整理
快速、批量地获取目标数据

网络爬虫可以做什么?

  • 批量采集某个行业或领域的数据,进行分析从而辅助决策或后续营销
  • 批量爬取视频、文章、漫画,实现脱网本地集中浏览
  • 开发火车票抢票程序,实现自动抢票

二. 正则表达式

意义

网页爬下来之后,一般都存在很多干扰信息
需要对我们关注地信息进行提取
正则表达式是用于信息筛选提取的强大工具

正则表达式基础

1. 全局匹配函数使用格式

re.compile(正则表达式).findall(源字符串)

re.compile:
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象
语法格式为:
re.compile(pattern[, flags])

  • pattern : 一个字符串形式的正则表达式
  • flags : 可选,表示匹配模式,比如忽略大小写,多行模式等
常用匹配模式 描述
re.I 忽略大小写
re.M 多行模式
re.S 让.也能匹配多行
re.X 为了增加可读性,忽略空格和 # 后面的注释

findall:
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
语法格式为:
findall(string[, pos[, endpos]])

  • string : 待匹配的字符串。
  • pos : 可选参数,指定字符串的起始位置,默认为 0。
  • endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。

2. 正则表达式模式

模式 描述 模式 描述
\n 匹配换行符 . 匹配除换行符外的任意字符
\t 匹配制表符 ^ 匹配开始位置
\w 匹配字母、数字、下划线 $ 匹配结束位置
\W 匹配非字母、数字、下划线 * 前一个匹配字符出现0\1\多次
\d 匹配任意数字,[0-9] ? 前一个匹配字符出现0\1次
\D 匹配非数字 + 前一个匹配字符出现1\多次
\s 匹配空白字符 {n} 前一个匹配字符恰好出现n次
\S 匹配非空白字符 {n,} 前一个匹配字符至少出现n次
[...] 一组字符,匹配组内任意字符 {n,m} 前一个匹配字符出现至少n次,至多m次,贪婪模式
[^...] 匹配非组内字符的其他字符 () 想要提取的内容

贪婪模式:尽可能多地匹配,默认贪婪
懒惰模式:尽可能少地匹配,精准模式

例如:

import re

string = '''one1two2three3four4
            WOw1234owoo'''  # 源字符串

pattern_11 = "wo"  # 字符串形式的正则表达式
pattern_12 = "wo*"

print(re.compile(pattern_11).findall(string))
>>>['wo', 'wo']
print(re.compile(pattern_12).findall(string))
>>>['wo', 'w', 'woo']
print(re.compile(pattern_12, re.I).findall(string))  # 忽略大小写
>>>['wo', 'WO', 'w', 'woo']

pattern_2 = "w.*o"  # 贪婪模式
pattern_3 = "w.*?o"  # 懒惰模式

print(re.compile(pattern_2).findall(string))
>>>['wo2three3fo', 'w1234owoo']
print(re.compile(pattern_2, re.S).findall(string))  # 让. 匹配包括换行在内的所有字符
>>>['wo2three3four4\n\t\t\tWOw1234owoo']
print(re.compile(pattern_3).findall(string))
>>>['wo', 'w1234o', 'wo']

pattern_4 = "w.*(three3).*o"  # 提取信息
print(re.compile(pattern_4).findall(string))
>>>['three3']

XPath表达式(补充):

常用匹配模式 描述
/ 逐层提取
text() 提取标签下面的文本
//标签名** 提取所有名为**的标签
@属性名 提取某个属性值

学习链接:
阿里云大学:python网络爬虫快速入门到精通
菜鸟教程:python正则表达式

猜你喜欢

转载自www.cnblogs.com/Jalor/p/12363103.html