《小白爬虫之books.toscrape》-----BeautifulSoup

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用BeautifSoup库实现爬虫


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

一、BeautifulSoup是什么?

BeautifulSoup是一个用于解析HTML和XML文档的Python库。以下是对BeautifulSoup的详细介绍:

一、主要功能

  1. 解析文档:BeautifulSoup能够将复杂的HTML和XML文档转换成一个树形结构,方便开发者从中提取数据、修改文档结构或将文档转换为标准格式。
  2. 查找标签:BeautifulSoup提供了丰富的方法来查找标签,开发者可以根据标签名、标签属性、标签内容等方式进行精确查找。
  3. 提取数据:开发者可以从解析后的树形结构中提取标签的属性值、文本内容等数据。
  4. 修改文档:BeautifulSoup允许开发者修改HTML和XML文档的结构,包括添加、删除或修改标签及其属性等操作。

二、支持的解析器

BeautifulSoup支持多种解析器,包括:

  1. html.parser:Python内置的HTML解析器。
  2. lxml:一个高效的C语言库,用于解析XML和HTML文档。
  3. html5lib:一个纯Python编写的库,用于解析HTML5文档。

开发者可以根据需要选择最适合自己的解析器。

三、使用场景

  1. 网页爬虫:抓取网页内容,提取有用信息,如新闻标题、链接、商品价格等。
  2. 数据抓取:从Web应用中抓取数据,用于数据分析、机器学习等场景。
  3. 自动化测试:模拟用户与网页的交互,检查网页内容是否符合预期。
  4. 网页内容修改:修改网页内容,生成新的HTML/XML文档,用于测试、展示或其他目的。

四、安装与使用

可以使用以下命令安装BeautifulSoup:

 

bash复制代码

pip install beautifulsoup4

安装完成后,可以通过以下方式使用BeautifulSoup:

python复制代码

from bs4 import BeautifulSoup


# 假设html_content是一个包含HTML内容的字符串
html_content = "<html><head><title>Example</title></head><body><p>Hello, world!</p></body></html>"


# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(html_content, 'html.parser')


# 查找并打印<title>标签的文本内容
title_tag = soup.find('title')
print(title_tag.text) # 输出: Example

五、优点与注意事项

  1. 优点

    • 简单易用:BeautifulSoup的API设计简洁直观,即使是初学者也能快速上手。
    • 容错性强:BeautifulSoup对于不规范的HTML/XML文档也有较好的解析能力。
    • 灵活性高:支持多种解析器和查找方法,满足开发者不同的需求。
  2. 注意事项

    • 确保文档格式正确:虽然BeautifulSoup对于不规范的文档有较好的容错性,但为了确保最佳的解析效果,还是建议使用标准和规范的HTML/XML文档。
    • 选择合适的解析器:不同的解析器有不同的性能和特点,开发者应根据具体需求选择合适的解析器。

二、实践爬取

目标网址:All products | Books to Scrape - Sandbox

这次我们使用soup.find()来查找html中所对应的标签,相对于xpath语法来说速度较快,话不多说上代码,爬取该网址的所有书名,价格,链接,评分。(如果看不太懂,建议查看我上一篇爬取豆瓣Top250)

import requests
from bs4 import BeautifulSoup

for page in range(1,51):
    # print(page)
    url = f'http://books.toscrape.com/catalogue/page-{page}.html'
    content = requests.get(url).text
    soup = BeautifulSoup(content,"html.parser")
    all_prices = soup.find_all("p", attrs={"class": "price_color"})
    all_title = soup.find_all("h3")
    all_star = soup.find_all("article",attrs={"class": "product_pod"})
    dic = {}

    for title in all_title:
        b_title = title.find("a").get("title")
        print(b_title)
       
    for price in all_prices:
        b_price = price.string[2:]
        print(b_price)

    for url in all_title:
        book_url_ = url.find("a").get("href")
        print( book_url_ )

    for star in all_star:
        p_star = star.find("p").get("class")
        print(p_star)
    print(f'----------------------第{page}页爬取完成--------------------------------------')
print('-----------------------爬虫结束-------------------------------')

三、数据展示

创作不易,观众大佬爷请点点赞


总结

综上所述,BeautifulSoup是一个功能强大且易于使用的Python库,它能够帮助开发者轻松地从复杂的HTML和XML文档中提取所需的数据并进行相应的修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值