zoukankan      html  css  js  c++  java
  • python爬虫(十九)BeautifulSoup4库

    1、BeautifulSoup4库也是一个HTML/XML解析器,主要也是提取数据。lxml只会局部遍历,BeautifulSoup是基于HTML DOM的,会载入整个文档,建立一个树状结构,在解析HTML时比较简单。

    from bs4 import  BeautifulSoup
    
    html=" 一段代码"
    
    soup=BeautifulSoup(html,'lxml')
    # 1、获取所有tr标签
    trs=soup.find_all('tr')
    # 2、获取第2个tr标签
    # limit表示前几个,先获取前两个,[1]表示第二个,就是前两个里面的第二个,在列表层面获取
    trs=soup.find_all('tr',limit=2)[1]
    # 3、获取所有class等于even的tr标签
    # 在python中class是关键字,所以在class后加一个_,作为区分
    trs=soup.find_all('tr',class_='even')
    # 或者
    trs=soup.find_all('tr',attrs={'class':"even"})
    # 4、获取所有id等于test,class也等于test的a标签
    ali=soup.find_all('a',id='test',class_='test')
    # 5、获取所有a标签的href属性
    alist=soup.find_all('a')
    for a in alist:
        href=a['href']
    # 或者
    href=a.attrs['href']
    # 6、获取所有的职位信息(纯文本)
    trs=soup.find_all('tr')[1:]
    # 除去第0个tr标签
    movies=[]
    for tr in trs:
        movie={}
        tds=tr.find_all('td')
        title=tds[0].string
        category=tds[1].string
        city=tds[2].string
    
    
        movie['title']=title
        movie['category']=category
        movie['city']=city
        movies.append(movie)
    # 或者
    trs=soup.find_all('tr')[1:]
    # 除去第0个tr标签
    movies=[]
    for tr in trs:
        movie = {}
        # 获得tr标签下所有的非空白文本,以列表的形式
        infos=list(tr.stripped_strings)
        movie['title']=infos[0]
        movie['category'] = infos[1]
        movie['city'] = infos[2]
        movies.append(movie)

    2、find与find_all的区别:

    find只提取符合条件的第一个标签,find_all可以提取所有满足要求的标签

    3、string:获取某个标签下面的非标签字符串,返回的是个字符串

    strings:获取某个标签下的子孙非标签字符串,返回的是个生成器

    stripped_strings:获得某个标签下的子孙非标签字符串,去掉空白字符,返回的是个生成器

    get_text:获取某个标签下的子孙非标签字符串,不是以列表的形式返回。返回的是普通字符串

  • 相关阅读:
    CDH5.13 集成Kerberos配置
    使用bash脚本删除文件最后几行
    yolov3模型微调(fine-tune)备忘
    ubuntu 18.04 rsync 命令使用 服务端配置
    python 子包调用 跨目录调用
    [转]命令行界面 (CLI)、终端 (Terminal)、Shell、TTY的联系与区别
    bash shell 判断变量是否在列表中
    TensorFlow 图像分类模型 inception_resnet_v2 模型导出、冻结与使用
    numpy 数组集合运算及下标操作
    Win10 Service'MongoDB Server' failed to start. Verify that you have sufficient privileges to start system services【简记】
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/12416438.html
Copyright © 2011-2022 走看看