Selenium学习003-元素选择之BeautifulSoup4

Selenium学习笔记目录

BeautifulSoup4

  • BS是可以从HTML或XML文件中提取数据的库

  • Selenium可以用来远程获取数据

  • 有的时候,感觉用Selenium获取某些元素数据不太方便

  • 可以将其父节点的html获取回来,利用BS在本地做分析

  • 我们可以将它和selenium两种技术融合使用,达到我们的目的

  • 安装BeautifulSoup4

    pip install beautifulsoup4
    # pip install beautifulsoup4 -i https://pypi.douban.com/simple/
    pip install html5lib
    
  • 常见用法(详见示例内的代码及注释)

    • 示例及具体方法
    # 本例采用的是本地的html
    with open ('test.html',encoding = 'utf8') as f :
        html_doc = f.read()
    # 导入beautifulsoup
    from bs4 import BeautifulSoup
    
    # 指定html5lib来解析html文档
    soup = BeautifulSoup(html_doc,'html5lib')
    
    print(soup.title) # 获取标签整体内容
    print(soup.p)# 有多个时,获取的是第一个
    print(soup.title.name) # 获取标签名称
    print(soup.title.string) # 获取点前节点标签的内容
    print(soup.title.get_text()) # 获取当前节点及子节点的所有内容
    print(soup.body.get_text("|")) # 获取当前节点及子节点的所有内容,以|分隔每个节点的内容
    print(soup.title.parent)# 获取当前节点及父节点的内容
    
    print(soup.body['style']) # 获取属性值
    print(soup.body.get('style')) # 获取属性值
    
    # 有多个标签想获取非第一个
    # 方法一;先返回所有的,在根据下标查找
    print(soup.find_all('p')) #返回的是一个列表所以可以使用列表获取元素的方法
    print(soup.find_all('p')[1]) # 根据下标获取第二个
    # 方法二:根据属性找
    print(soup.find_all('p',id='b')) # 根据id获取第二个
    
    # 执行结果
    
    <title>测试</title>
    <p id="a">第一个p</p>
    title
    测试
    测试
    
    |
    标题1
    |
    |
    标题2
    |
    |第一个p|
    |第二个p|
    |第三个p|
    
    
    <head>
    <title>测试</title>
    </head>
    background-color: yellow
    background-color: yellow
    [<p id="a">第一个p</p>, <p id="b">第二个p</p>, <p id="c">第三个p</p>]
    <p id="b">第二个p</p>
    [<p id="b">第二个p</p>]
    
    • 演示文件
    # html文件(本地)
    <html>
    <head>
    <title>测试</title>
    </head>
    <body style='background-color: yellow'>
    <h1 >
    标题1
    </h1>
    <h2 style = 'background-color:green;text-align:center'>
    标题2
    </h2>
    <p id ='a'>第一个p</p>
    <p id = 'b'>第二个p</p>
    <p id = 'c'>第三个p</p>
    </body>
    </html>
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容