BeautifulSoup的CSS选择器技巧及其在Web爬虫中的应用
BeautifulSoup(简称BS)是用Python语言编写的一个库,主要用于从HTML或XML文档中提取数据。BS的优点之一是它可以使用CSS选择器来查找特定元素。本文将介绍一些BS的CSS选择器技巧及其在Web爬虫中的应用。
- 使用标签名称
使用标签名称可以匹配所有具有该标签的元素。例如,要匹配HTML文档中的所有段落元素:
from bs4 import BeautifulSoup html = '<p>pidancode.com</p><p>皮蛋编程</p>' soup = BeautifulSoup(html, 'html.parser') p_tags = soup.select('p') print(p_tags)
输出结果:
[<p>pidancode.com</p>, <p>皮蛋编程</p>]
- 使用类名
使用CSS类选择器(以点号"."开头)可以匹配所有具有指定类的元素。例如,要匹配所有class为"foo"的元素:
from bs4 import BeautifulSoup html = '<p class="foo">pidancode.com</p><p class="foo">皮蛋编程</p><p class="bar">Hello world</p>' soup = BeautifulSoup(html, 'html.parser') foo_tags = soup.select('.foo') print(foo_tags)
输出结果:
[<p class="foo">pidancode.com</p>, <p class="foo">皮蛋编程</p>]
- 使用ID
使用CSS ID选择器(以井号"#"开头)可以匹配具有指定ID的元素。例如,要匹配ID为"content"的元素:
from bs4 import BeautifulSoup html = '<div id="content"><h1>Title</h1><p>pidancode.com</p></div>' soup = BeautifulSoup(html, 'html.parser') content_tag = soup.select('#content') print(content_tag)
输出结果:
[<div id="content"><h1>Title</h1><p>pidancode.com</p></div>]
- 使用属性
使用CSS属性选择器(用中括号"[]"包围)可以匹配具有指定属性的元素。例如,要匹配所有href属性为"http://www.pidancode.com"的链接:
from bs4 import BeautifulSoup html = '<a href="http://www.pidancode.com">pidancode.com</a><a href="http://www.pdpython.com">皮蛋Python</a>' soup = BeautifulSoup(html, 'html.parser') links = soup.select('a[href="http://www.pidancode.com"]') print(links)
输出结果:
[<a href="http://www.pidancode.com">pidancode.com</a>]
- 结合使用
可以使用多个选择器来匹配复杂的结构。例如,要匹配class为"item"且包含"data"的div元素:
from bs4 import BeautifulSoup html = ''' <div class="item"> <h3 class="title">Title 1</h3> <p class="data">pidancode.com</p> </div> <div class="item"> <h3 class="title">Title 2</h3> <p>皮蛋编程</p> </div> ''' soup = BeautifulSoup(html, 'html.parser') divs = soup.select('div.item p.data') print(divs)
输出结果:
[<p class="data">pidancode.com</p>]
以上是一些常见的BS的CSS选择器技巧及其在Web爬虫中的应用。通过结合使用这些选择器,可以方便地提取出你想要的数据。
相关文章