python爬虫基础(2:数据提取之BeautifulSoup)

数据提取工具有很多,这里只介绍BeautifulSoup的简单使用和小案例

因为有写的很好的介绍博客,所以我直接粘链接

BeautifulSoup介绍链接:https://cuiqingcai.com/1319.html

案例依旧选用没有反爬的 豆瓣电影Top250

第一步:获取源码

简单的三句话

# 导入requests模块
import requests
# 导入BeautifulSoup模块
from bs4 import BeautifulSoup


# 获取要爬取的网页的url
url = 'https://movie.douban.com/top250'
# 用get()方法请求下载网页
rsp = requests.get(url)
# text属性返回网页源码的内容
text = rsp.text

第二步:找到数据的位置

通过用浏览器的开发者工具查看源码

python爬虫基础(2:数据提取之BeautifulSoup)_第1张图片

发现每一个电影都包含在

  • 用beautifulsoup的 findall() 方法找到它的位置

    # 用BeautifulSoup()方法将源码内容生成能用BeautifulSoup解析的lxml格式文件
    BS = BeautifulSoup(text, 'lxml')
    # 用find_all()方法找到包含电影的所有标签
    movies = BS.find_all(name='div', attrs={'class': 'item'})

     

  • 第三步:获取所需要的数据

    利用beautifulsoup的各种获取方法提取出对应数据

    小注意:

     电影信息标签里有内嵌标签
    ,用string属性无法获取,所以用 get_text() 方法来获取文本

    python爬虫基础(2:数据提取之BeautifulSoup)_第2张图片

    # 遍历每一个电影信息
    for movie in movies:
        # 提取图片的地址信息
        img = movie.find(name='img', attrs={'width': '100'}).attrs['src']
        # 提取电影名字信息
        name = movie.find(name='span', attrs={'class': 'title'}).string
        # 提取电影介绍信息
        # 注意:get_text()能提取包含有内嵌标签的信息
        intro = movie.find(name='p', attrs={'class': ''}).get_text()
        # 提取评价信息
        # 注意:评价信息分别在在多个里面,所以用findall()方法
        star = movie.find(name='div', attrs={'class': 'star'}).find_all(name='span')
        # 获取评分
        score = star[1].string
        # 获取评价人数
        fans_num = star[3].string
        # 获取引语
        quote = movie.find(name='span', attrs={'class': 'inq'}).string

     

    第四步:简单保存

    open()write() 方法将提取的数据存在txt文本文件里

        # 用open()方法创建一个名为‘Top250’的‘txt’文件
        with open('Top250.txt', 'a', encoding='utf-8') as f:
            # 用write()方法写入内容
            f.write('img:'+img+'     name:'+name+'     intro:'+intro+'     score:'+score+'     fans_num:'+fans_num+'     quote:'+quote + '\n')

    结果展示:

    python爬虫基础(2:数据提取之BeautifulSoup)_第3张图片

    全部代码

    # 导入requests模块
    import requests
    # 导入BeautifulSoup模块
    from bs4 import BeautifulSoup
    
    
    # 获取要爬取的网页的url
    url = 'https://movie.douban.com/top250'
    # 用get()方法请求下载网页
    rsp = requests.get(url)
    # text属性返回网页源码的内容
    text = rsp.text
    # 用BeautifulSoup()方法将源码内容生成能用BeautifulSoup解析的lxml格式文件
    BS = BeautifulSoup(text, 'lxml')
    # 用find_all()方法找到包含电影的所有标签
    movies = BS.find_all(name='div', attrs={'class': 'item'})
    # 遍历每一个电影信息
    for movie in movies:
        # 提取图片的地址信息
        img = movie.find(name='img', attrs={'width': '100'}).attrs['src']
        # 提取电影名字信息
        name = movie.find(name='span', attrs={'class': 'title'}).string
        # 提取电影介绍信息
        # 注意:get_text()能提取包含有内嵌标签的信息
        intro = movie.find(name='p', attrs={'class': ''}).get_text()
        # 提取评价信息
        # 注意:评价信息分别在在多个里面,所以用findall()方法
        star = movie.find(name='div', attrs={'class': 'star'}).find_all(name='span')
        # 获取评分
        score = star[1].string
        # 获取评价人数
        fans_num = star[3].string
        # 获取引语
        quote = movie.find(name='span', attrs={'class': 'inq'}).string
        # 用open()方法创建一个名为‘Top250’的‘txt’文件
        with open('Top250.txt', 'a', encoding='utf-8') as f:
            # 用write()方法写入内容
            f.write('img:'+img+'     name:'+name+'     intro:'+intro+'     score:'+score+'     fans_num:'+fans_num+'     quote:'+quote + '\n')
    

     

    你可能感兴趣的:(python爬虫,Python爬虫基础)