BeautifulSoup提取没有div的div文本

问题描述

我很难从内部有div的div中提取文本(没有)。所以这里是:

<div style="width:100%">
    <div class="status_p">
    ACTIVE
    </div>
   Name
</div>

我想提取不包含具有ACTIVE的div的名称。每当我打印第一个div时,它总是为我提供ACTIVENAME

解决方法

您可以在bs4标签上使用children属性,该属性为您提供标签中的所有子级。选择孩子之后,您可以获取孩子列表的最后一个元素

from bs4 import BeautifulSoup

html = """<div style="width:100%">
    <div class="status_p">
    ACTIVE
    </div>
   Name
</div>"""

soup = BeautifulSoup(html,"html.parser")

print(list(soup.find("div").children)[-1].strip())

输出:

Name

OR

您可以使用stripped_strings

print(list(soup.find("div").stripped_strings)[-1])

OR

您可以删除内部div并仅获取名称。

soup.find("div",class_="status_p").extract()
print(soup.find("div").get_text(strip=True))
,

我找到了解决方法并使用了

import React,{ Fragment } from 'react';
import {
  AppBar,Toolbar,Typography,Button,Box,Avatar,Link,} from '@material-ui/core';
import IconButton from '@material-ui/core/Icon';
import { ArrowBack } from '@material-ui/icons';
import { makeStyles } from '@material-ui/core/styles';

const useStyles = makeStyles({
  appbarStyle: {
    fontStyle: 'oblique',},arrowbackStyle: {
    color: '#8b0e3a',background: '#ffffff',typographyStyle: {
    color: '#8b0e3a',womenLink: {
    color: 'white',marginLeft: '10px',});

const NavigationBar = () => {
  const classes = useStyles();
  return (
    <Fragment>
      <Box>
        <Avatar src='' alt='logo' />
      </Box>
      <Box component='nav'>
        <AppBar position='static' className={classes.appbarStyle}>
          <Toolbar>
            <IconButton>
              <ArrowBack className={classes.arrowbackStyle} />
            </IconButton>
            <Link className={classes.womenLink} href='#'>
              link1
            </Link>
            <Typography
              variant='h5'
              className={classes.typographyStyle}
              justify='center'
              align='center'
            >
              Hello world
            </Typography>
          </Toolbar>
        </AppBar>
      </Box>
    </Fragment>
  );
};

export default NavigationBar;