Python使用BeautifulSoup

33 篇文章 0 订阅
30 篇文章 0 订阅


前言

在没接触Python之前使用正则表达式来解析网页,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,但是在Python中有工具叫BeautifulSoup,有了它我们可以很方便地提取出 HTML 或 XML 标签中的内容,实在是方便


提示:以下是本篇文章正文内容,下面案例可供参考

一、BeautifulSoup是什么?

BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

二、如何使用

1.引入库

代码如下(示例):

pip install beautifulsoup4
pip3 install lxml

2.解析方式

代码如下(示例):

# coding:utf-8
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'}
r = requests.get("http://www.samr.gov.cn/zw/",headers=headers)
soup = BeautifulSoup(r.content,"lxml")
#print(soup)
#print(soup.title)
#print(soup.li)  #返回html中的第一li元素
# 如果有多个则会返回None
#print(soup.li.string)
#print(soup.li.contents)
#print(soup.li.children)
'''
for i in soup.li.children:
        print(i.string)
'''
#items = soup.select("body > div .saictopbox > div .mainShareDiv_24 > div > div > a" )
#items = soup.select("body > div .saictopbox > div.share.topshare > div.mainShareDiv_24 > div" )
'''
for i in items:
    print(i)

items = soup.select_one("body > div .saictopbox > div .mainShareDiv_24 > div > div > a" )
print(items)  #返回打印一条匹配的数据
'''
#items = soup.find_all("a",attrs={"href":"#"})
items = soup.find("a",attrs={"href":"#"})
print(items)

select 多class 为什么要这样写,不明白
代码如下(示例):

items = soup.select("body > div .saictopbox > div.share.topshare > div.mainShareDiv_24 > div" )

下面这样写也行
代码如下(示例):

# coding:utf-8
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'}
url="https://www.qq.com/"
resp = requests.get(url,headers=headers)
#print(resp.encoding)
#wbdata = resp.text
wbdata = resp.text
soup = BeautifulSoup(wbdata,"lxml")
#print(soup)
#news_titles = soup.select("div .detail > h3 > a[target='_blank']")
news_titles = soup.select("div.bd > ul.news-list > li > a[target='_blank']")
for i in news_titles:
    title = i.get_text()  #获取标签的文本信息
    link = i.get("href")  #获取标签的属性值
    #打印字典
    data = {"标题":title,"链接":link}
    print(data)

在这里插入图片描述


总结

记录点点滴滴

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 使用 BeautifulSoup 这是一个用于解析 HTML 和 XML 文档的强大库。它主要依赖于 Python 的标准库中的 `html.parser` 来解析文档,并提供了一个高级 API,使得开发者可以方便地提取数据。 ### 安装和导入 首先需要安装 BeautifulSoup4 库(如果尚未安装),可以使用 pip 进行安装: ```bash pip install beautifulsoup4 ``` 然后在您的 Python 脚本中导入 BeautifulSoup: ```python from bs4 import BeautifulSoup ``` ### 示例:从网页抓取数据 假设您想要从某网页中抓取特定的信息,比如文章标题、作者或日期等。您可以按照以下步骤操作: 1. **打开网页并获取内容**: ```python from urllib.request import urlopen url = "https://example.com" html_content = urlopen(url).read().decode('utf-8') ``` 2. **创建 BeautifulSoup 对象**: ```python soup = BeautifulSoup(html_content, 'html.parser') ``` 3. **查找元素**: - 您可以使用 CSS 选择器或标签名称来定位特定的元素。 ```python # 查找所有 h1 标签内的文本 titles = soup.find_all("h1") for title in titles: print(title.text) ``` - 或者使用类名或其他属性来进行更复杂的搜索: ```python # 查找所有包含特定类的 div 元素 divs_with_class = soup.find_all("div", class_="my-class") for div in divs_with_class: print(div.get_text()) ``` ### 解析结果 BeautifulSoup 结果会是一个易于处理的对象结构,其中每个节点都表示原始 HTML 中的一个元素。这允许您很容易地访问和修改元素的内容或属性。 ### 优势 - **易用性**: BeautifulSoup 提供了直观的方式来遍历和搜索HTML/XML文档,简化了DOM操作。 - **灵活性**: 支持多种解析器,如 lxml 等,提供更强大的功能和性能。 - **错误容错**: 对于无效或错误的 HTML 文件也能优雅处理。 ### 应用场景 - 网页信息抓取:爬虫应用,收集新闻、博客或产品信息。 - 数据清洗:自动化提取表格数据,整理成便于分析的数据格式。 - 自动化测试:验证网站结构变化或动态生成页面内容的一致性。 通过掌握 BeautifulSoup 的基础用法,您可以轻松地对网页内容进行深度挖掘,服务于各种数据分析和网络自动化任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panda_225400

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值