python 爬虫 2 (网页解析bs4、lxml、xpath、正则)

小咪咪 2023-10-08 12:04 175阅读 0赞

bs4、lxml、xpath、正则

    • 写在前面
      • 1、bs4语法
        • 1.1、soup=BeautifulSoup(html)
        • 1.2、soup.prettify()
        • 1.3、soup.title
        • 1.4、soup.find(‘a’)
        • 1.5、select选择器
      • 2、lxml使用
      • 3、xpath语法
      • 4、正则语法

写在前面

bs4官方文档

https://beautifulsoup.readthedocs.io/zh\_CN/v4.4.0/

安装bs4

  1. pip install bs4

安装lxml

  1. pip install lxml

1、bs4语法

1.1、soup=BeautifulSoup(html)

soup=BeautifulSoup(html)
在这里插入图片描述
也可以解析一个html文件

  1. soup = BeautifulSoup(open('soup.html', encoding='utf8'))
1.2、soup.prettify()

按照html格式输出

  1. soup.prettify()
1.3、soup.title

soup.标签名 ,可以直接获取该标签的内容
在这里插入图片描述

  1. soup.a.attrs 返回一字典,里面是所有属性和值
  2. soup.a['href'] 获取href属性
  3. soup.a.string
  4. soup.a.text
  5. soup.a.get_text() 【注】当标签里面还有标签的时候,string获取的为None
1.4、soup.find(‘a’)
  1. soup.find('a')
  2. soup.find('a', class_='xxx')
  3. soup.find('a', title='xxx')
  4. soup.find('a', id='xxx')
  5. soup.find('a', id=re.compile(r'xxx'))
  6. 【注】find只能找到符合要求的第一个标签,他返回的是一个对象

find_al、返回一个列表,列表里面是所有的符合要求的对象

  1. soup.find_all('a')
  2. soup.find_all('a', class_='wang')
  3. soup.find_all('a', id=re.compile(r'xxx'))
  4. soup.find_all('a', limit=2) 提取出前两个符合要求的a
1.5、select选择器
  1. ret = soup.select('a')
  2. ret = soup.select('#muxiong')
  3. print(ret[0]['title'])
  4. ret = soup.select('.wang')
  5. print(ret)
  6. ret = soup.select('div > a')
  7. print(ret)
  8. ret = soup.select('a[title=东坡肉]')
  9. print(ret)
  10. odiv = soup.select('.tang')[0]
  11. ret = odiv.select('a')

常用的选择器
标签选择器、id选择器、类选择器
层级选择器**
div h1 a 后面的是前面的子节点即可
div > h1 > a 后面的必须是前面的直接子节点
属性选择器
input[name=‘hehe’]
select(‘选择器的’)
【注】返回的是一个列表,列表里面都是对象
【注】find find_all select不仅适用于soup对象,还适用于其他的子对象,如果调用子对象的select方法,那么就是从这个子对象里面去找符合这个选择器的标签

2、lxml使用

lxml只是一个解析文档的引擎,bs4用的时候语法无差异
在这里插入图片描述
lxml的特点是,它是c语言的,运行比较快

3、xpath语法

在这里插入图片描述

xpath教程
https://www.w3school.com.cn/xpath/index.asp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、正则语法

正则教程:
https://www.runoob.com/python/python-reg-expressions.html

python正则:

  1. re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败
  2. re.search 匹配整个字符串,直到找到一个匹配。
  3. re.sub 用于替换字符串中的匹配项。
  4. re.compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() search() 这两个函数使用。
  5. re.finditer 在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
  6. re.split 方法按照能够匹配的子串将字符串分割后返回列表

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,175人围观)

还没有评论,来说两句吧...

相关阅读

    相关 bs4配合上re表达式

    简述 在看书的时候,看到有soup.find\_all中text可以传进去一个正则表达式对应的来筛选。然后,就试试了下还能不能用其他的方法。 除了上面的,可以通过传参数