【问题标题】:Python. BeautifulSoup. Get data from a tag (DIV) without attributesPython。美丽汤。从不带属性的标签 (DIV) 中获取数据
【发布时间】:2020-07-16 10:25:57
【问题描述】:

例子

html-code
html-code
<div data-content="N(EX%hY-G47*@A8Ru%%c7@tG4mN3k/mebP631Y0B1A08s!Xn_sd#xGzJtF;^*03znN;-r6X8cu2;*+E%6l"></div>
html-code
html-code

如何使用 BeautifulSoup 找到这个 DIV 并获取引号之间的数据? data-content="?????"

【问题讨论】:

    标签: python python-3.x beautifulsoup


    【解决方案1】:

    轻松使用soup.findAll("div", attrs={"data-content":True})

    如下:

    from bs4 import BeautifulSoup
    
    html = """
    <div data-content="N(EX%hY-G47*@A8Ru%%c7@tG4mN3k/mebP631Y0B1A08s!Xn_sd#xGzJtF;^*03znN;-r6X8cu2;*+E%6l" href="www.test1.com" </div>
    <div data-content="2" href="www.test1.com" </div>
    <div data-content="3" href="www.test2.com" </div>
    <div data-content="4" href="www.test2.com" </div>
    <div data-content="5" href="www.test3.com" </div>
    <div data-content="6" href="www.test3.com" </div>
    """
    
    
    soup = BeautifulSoup(html, 'html.parser')
    
    
    goal = [url.get("data-content")
            for url in soup.findAll("div", {'data-content': True})]
    
    print(goal)
    

    输出:

    ['N(EX%hY-G47*@A8Ru%%c7@tG4mN3k/mebP631Y0B1A08s!Xn_sd#xGzJtF;^*03znN;-r6X8cu2;*+E%6l', '2', '3', '4', '5', '6']
    

    【讨论】:

      【解决方案2】:

      像这样使用 css 选择器非常容易:

      from bs4 import BeautifulSoup
      
      html = '<div data-content="N(EX%hY-G47*@A8Ru%%c7@tG4mN3k/mebP631Y0B1A08s!Xn_sd#xGzJtF;^*03znN;-r6X8cu2;*+E%6l"></div>'
      
      soup = BeautifulSoup(html, 'lxml')
      
      soup.select_one('div[data-content]')["data-content"]
      

      输出

      'N(EX%hY-G47*@A8Ru%%c7@tG4mN3k/mebP631Y0B1A08s!Xn_sd#xGzJtF;^*03znN;-r6X8cu2;*+E%6l'
      

      【讨论】:

      • 欢迎来到stackoverflow社区,其实并没有什么不同。 check
      • @αԋɱҽԃαмєяιcαη 感谢您的更正。我从我的答案中删除了它:)
      猜你喜欢
      • 2014-04-16
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2015-12-25
      • 2017-12-05
      • 2021-02-08
      相关资源
      最近更新 更多