PYTHON爬虫(正则re模块 | bs4 | pyquery)
程序员文章站
2022-07-10 13:50:22
...
一 综述
result = re.match(parttern,string,model)
result.group(1)
- 尽量使用泛匹配(.*),使用非贪婪模式(.*?),用括号得到匹配目标(result.group()) ,特殊符号 \ 转义,换行符泛匹配使用re.S匹配模式
二 几个方法
- re.match( ):从头匹配,开头不匹配则返回none
- re.search( ):从字符串中寻找,返回找到的第一个结果
- re.findall( ):返回所有找的结果
- re.sub(pattern,' ',string):替换匹配的字符串
- pattern = re.compile(regx):便于正则串的复用
三 beautifulSoup
1 标签选择器
- soup.head.title
- soup.head.name:获取标签的名称
- soup.a['href']:获取标签的相应属性
- soup.a.string:获取标签的文本
获取子孙节点:
- soup.p.contents:获取子节点,返回一个列表类型
- soup.p.children:获取子节点,返回一个迭代器类型
- soup.p.desendants:获取子孙节点,返回一个迭代器类型
获取父节点和祖先节点:
- soup.p.parent : 获取父节点
- soup.p.parents : 获取祖先节点
获取兄弟结点:
- soup.p.next_siblings
- soup.p.previous_siblings
2 标准选择器
标签选择:
- soup.find_all('ul')
- soup.find('ul')
属性选择:
- soup.find(attrs={字典})
- soup.find(id=' ')
- soup.find(class_=' ')
text匹配选择:
- soup.find(text=' ')
其他选择:
- find_parents() find_parent() 等
3 css选择器
- soup.select('css选择器')
- soup.select('css选择器')['id']:获取属性
- soup.select('css选择器').get_text():获取文本
4 BS总结
- 推荐使用lxml解析库,必要时使用html.parser
- 标签选择功能弱,但是速度快
- 建议使用find()和find_all()方法查询一个或者多个结果
- css选择器很好用
- 获取属性和文本非常常用
四 pyquery(类似于jquery)
1 初始化
- 字符串初始化
- url初始化:pq(url=" ")
- 文件初始化:pq(filename=" ")
2 基本css选择器
- 查找子元素:doc.find()/children()
- 查找父元素:doc.parents()/parent()
- 查找兄弟元素:doc.siblings()
- 多元素的遍历:doc.items()返回一个生成器
- 获取属性:doc.attr.href
- 获取文本:text()
- 获取html:html()
3 dom操作
- addClass / removeClass
- attr / css
- remove
4 伪类选择器:参考css的伪类选择器
- p:first-child / p:last-child
上一篇: Python re正则模块
下一篇: 网络爬虫02: 正则Re模块