zoukankan      html  css  js  c++  java
  • BeautifulSoup-bs4的简单使用

    # 简单使用:
    #     说明:选择器 jquery
    #导入from bs4 import BeautifulSoup
    #使用方式:可以将一个html文档,转化为一个对象,
    # 然后通过对象的方法或者属性去查找指定对象
    #转化本地文件soup = BeautifulSoup(open("本地文件"),'lxml')
    #转化网络文件soup = BeautifulSoup(open("字符串或者字节类型"),'lxml')
    
    from bs4 import BeautifulSoup
    
    #生成对象
    soup = BeautifulSoup(open("xx.html"),'lxml')
    #打印  这是一个对象
    print(soup)
    #1、根据签名查找
    #可以查找这个对象的所有HTML标签
    print(soup.a)#<a href=""...>   a标签
    print(soup.div) #div 标签
    #2、获取标签中的属性 比如<a href=""...> 中有href和内容两部分属性
    #<a href="http://www.baudu.com/meinv.jpg" title="" target="" >这里是内容</a>
    print(soup.a['href'])
    print(soup.a['title'])
    print(soup.a['target'])
    print(soup.a['attrs'])#找出所有属性和值并返回一个属性字典
    #3、获取内容
    #<a href="http://www.baudu.com/meinv.jpg" title="" target="" >这里是内容</a>
    #以下三个都可以
    print(soup.a.string)
    print(soup.a.text)
    print(soup.a.get_text())
    #4、获取一个div中的内容  如下  来区别以上三个方法的不同
    # <div>
    #     甄姬
    #     <p>百里守约</p>
    #     <p>李白</p>
    #     太乙真人
    # </div>
    print(soup.a.string)#只能获取标签里面只有文本的情况 标签里有别的标签就获取不到了 结果为None
    print(soup.a.text)#这个方法里面有标签也可以获取所有文本内容
    print(soup.a.get_text())#这个方法里面有标签也可以  和上一个效果一样
    #5、soup.find('a')
    print(soup.find("a"))#找到第一个符合要求的a
    print(soup.find("a"),title="限制")#通过第二个参数来限制
    print(soup.find("a"),alt="限制")
    print(soup.find("a"),class_="限制")#class是关键字不能用,但是可以用class_
    print(soup.find("a"),id="限制")
    
    #如果有重复的 需要精确查找 自己定义限定块 再查找 代码如下
    #find方法不仅soup可以调用,普通div对象也能调用,
    # 会去指定的div里面查找符合要求的节点
    div = soup.find('div',class_="第一个限制块")
    print(div.find('a',class_="第二个限制条件"))
    #6、find_all()  和上面的find差不多
    lt = soup.find_all('a')
    print(lt,len(lt))#会产生一个列表 ,里面会有几个查找到的元素
    div = soup.find_all('div',class_="第一个限制块")
    print(div.find_all('a',class_="第二个限制条件"))
    print(div.find_all('a','b')
    print(div.find_all('a',limit=2)#找到所有取出前2个
    #7、select 根据选择器选择指定的内容
    #常见选择器:标签选择器、类选择器、id选择器、层级选择器、伪类选择器、属性选择器、组合选择器
    #a  标签a
    # .dudu 类选择器
    # #lala id选择器
    # 层级选择器举例  div .dudu #lala .meme .xixi    下面好多级
    #建议层级选择器写法:div>p>a>.lala  这样只能找下面一级
    print(soup.select(".tang>ul>li>a")[2])  #返回的是列表 这个是取第三个
    print(soup.select("#feng")[0].text|['href'])#取查找到的第一个  。text并只找文本
    #select选择器返回的永远是列表  需要通过下标提取指定的对象,然后获取属性和节点
    作者:求知鱼

    -------------------------------------------

    个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    独学而无友,则孤陋而寡闻,开源、分享、白嫖!

  • 相关阅读:
    [ICPC2016上海F] Mr. Panda and Fantastic Beasts
    [ICPC2016上海E] Bet
    [ICPC2016上海D] Ice Cream Tower
    [ICPC2016上海L] World Cup
    [CCPC2020长春F] Strange Memory
    [CF1495C] Garden of the Sun
    【实战】牛年的第一个SQL注入漏洞
    【实战】一次有趣的HPP绕WAF记录
    [模板]二分答案
    字典树及其应用
  • 原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12182927.html
Copyright © 2011-2022 走看看