欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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