赞
踩
Python爬虫是一种通过编程自动化地获取互联网上的信息的技术。其原理可以分为以下几个步骤:
今天主要介绍一下BeautifulSoup模块
BeautifulSoup是一个用于从HTML或XML文档中提取数据的Python库。它的主要作用是解析复杂的HTML或XML文档,并提供了一种简单的方式来浏览文档树、搜索特定的标签、提取数据等。BeautifulSoup的设计目标是让数据提取变得容易、直观,并且具有Pythonic的风格。
安装命令
pip install bs4

我这里是安装过了,第一次安装会出现suessful

# coding=utf-8 import requests # 导入请求模块 from bs4 import BeautifulSoup # # from bs4 import BeautifulSoup 这样导入的目的是从 bs4(Beautiful Soup 4)库中引入 BeautifulSoup 类。这样导入的好处是在代码中使用 BeautifulSoup 类时不需要每次都写出完整的模块路径,简化了代码,提高了可读性。 # 设置要爬取的网站 url = "https://www.baidu.com/" heder = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 爬取内容 res = requests.get(url, headers=heder) # 这里是去请求网页的内容 # 获取内容 content = res.text # 这里是让爬取的内容以文本的形式打开,同时保存到变量 # 初始化Beatifulsoup soup = BeautifulSoup(content, 'html.parser') # 获取标题标签 print(soup.title) # 如果想要直接获取标题的内容 # print(soup.title.string)
注意:因为百度需要添加请求头才能获取返回的内容,故此处定义了一个heder
请求头可以按以下方式获取

运行结果

在BeautifulSoup中,soup.tagName 的语法用于访问解析后的HTML文档中特定HTML标签的第一个出现实例。在这里,soup 是BeautifulSoup对象的引用,而tagName是你想要访问的HTML标签的名称。
它会返回第一个你指定的html标签的内容
这里可以看到百度的第一个a标签是百度首页的

使用soup.tagName
# coding=utf-8 import requests from bs4 import BeautifulSoup # 设置要爬取的网站 url = "https://www.baidu.com/" heder = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 爬取内容 res = requests.get(url, headers=heder) # 获取内容 content = res.text # 这里是让爬取的内容以文本的形式打开,同时保存到变量 # 初始化Beatifulsoup soup = BeautifulSoup(content, 'html.parser') # 获取<a></a>标签第一次出现的地方 # print(soup.tagName) print(soup.a)
运行结果

soup.find() 是 BeautifulSoup 中用于查找单个标签的方法。它用于按照指定的条件查找文档中的第一个匹配的标签,并返回这个标签的 BeautifulSoup 对象。
查找标签的功能与soup.tagName是一样的,不同的是soup.find拥有丰富的参数,所以可以通过标签的class属性,或者是id属性来查找特定的标签
相关参数
name: 要查找的标签名称,可以是字符串、正则表达式、函数等。attrs: 标签的属性,可以用字典形式表示。recursive: 是否递归查找,默认为 True。string: 标签中的文本内容。kwargs: 其他特定标签属性的关键字参数。下面演示通过attrs查找

# coding=utf-8 import requests from bs4 import BeautifulSoup # 设置要爬取的网站 url = "https://www.baidu.com/" heder = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 爬取内容 res = requests.get(url, headers=heder) # 获取内容 content = res.text # 这里是让爬取的内容以文本的形式打开,同时保存到变量 # 初始化Beatifulsoup soup = BeautifulSoup(content, 'html.parser') # 获取<a></a>标签第一次出现的地方 print(soup.find('input', attrs={'id': 'su'}))
运行结果

该方法返回的是指定标签下面的所有内容,而且是列表的形式;传入的方式是多种多样的。
(1)传入单个标签
# coding=utf-8 import requests from bs4 import BeautifulSoup # 设置要爬取的网站 url = "https://www.baidu.com/" heder = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 爬取内容 res = requests.get(url, headers=heder) # 获取内容 content = res.text # 这里是让爬取的内容以文本的形式打开,同时保存到变量 # 初始化Beatifulsoup soup = BeautifulSoup(content, 'html.parser') # 获取所有的a标签并以列表形式返回 list_a = soup.find_all('a') # 输出显示获取到的a标签列表 for i in list_a: print(i)
运行结果

(2)传入多个标签
# coding=utf-8 import requests from bs4 import BeautifulSoup # 设置要爬取的网站 url = "https://www.baidu.com/" heder = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } # 爬取内容 res = requests.get(url, headers=heder) # 获取内容 content = res.text # 这里是让爬取的内容以文本的形式打开,同时保存到变量 # 初始化Beatifulsoup soup = BeautifulSoup(content, 'html.parser') # 获取所有的a标签和input标签并以列表形式返回 list_a = soup.find_all('a', 'input') # 输出显示获取到的a标签列表 for i in list_a: print(i)
(3)传入正则表达式
万金油表达式
# 找所有的xxx标签: 属性xxx满足对应正则表达式
soup.find_all(name='xxx',attrs={'xxx':re.compile('正则表达式')}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。