PYTHON爬虫(正则re模块 | bs4 | pyquery)

一 综述

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

猜你喜欢

转载自blog.csdn.net/stanwuc/article/details/81941781