BeautifulSoup4 案例

前言

Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。

更多详细使用方法:Beautiful Soup 4.4.0 中文开发文档


#前期准备
pip install beautifulsoup4
pip install lxml

案例


import requests
from bs4 import BeautifulSoup

url = 'https://www.imooc.com/course/list?c=python'
web_data = requests.get(url)
Soup = BeautifulSoup(web_data.content, 'lxml', from_encoding='utf-8')
TitleArray = []
LinkArray = []
GradeArray = []
PeopleArray = []

for title in Soup.find_all('h3', class_='course-card-name'):
    # print(title.text)
    TitleArray.append(title.text)

for link in Soup.find_all('a', class_='course-card'):
    # print(link.get('href'))
    LinkArray.append(link.get('href'))

for grade in Soup.find_all('div', class_='course-card-info'):
    # print(grade.find_next('span').text)
    GradeArray.append(grade.find_next('span').text)

for people in Soup.find_all('div', class_='course-card-info'):
    # print(people.select('span')[1].text)
    PeopleArray.append(people.select('span')[1].text)

for i in range(len(TitleArray)):
    print('标题:' + TitleArray[i] + '----链接:https://www.imooc.com/' + LinkArray[i] + ' ----等级:' + GradeArray[i] + '----学习人数:' + PeopleArray[i])

代码分析

  1. 获取标题

    
    for title in Soup.find_all('h3', class_='course-card-name'):
        print(title.text)
    
  2. 获取链接

    
    for link in Soup.find_all('a', class_='course-card'):
        print(link.get('href'))
  3. 获取等级

    
    for grade in Soup.find_all('div', class_='course-card-info'):
        print(grade.find_next('span').text)
    
  4. 获取学习人数

    
    for people in Soup.find_all('div', class_='course-card-info'):
        print(people.select('span')[1].text)
    
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注