【问题标题】:Determining HTML Element in a web page for web scraping确定网页中的 HTML 元素以进行网页抓取
【发布时间】:2018-04-06 01:56:21
【问题描述】:

这是 HTML 代码:

 <span class="milestone">Announcement:</span>
 "&nbsp; 2 April 2000 "
 <br>
 <span class="milestone">Ground Breaking:</span>
 "&nbsp; 23 February 2002
 <br>
 etc.

在网页上,我可以看到:

公告: 2000 年 4 月 2 日

破土动工: 2002 年 2 月 23 日

但我不知道如何使用 Python 的 BeautifulSoup 获取日期。使用 Chrome 的“检查元素”时,我可以看到日期信息,但我不知道获取它所需的 HTML 元素。 &amp;nbsp; 是否有细微差别使抓取更加困难?我不确定接下来要探索哪些选项。

【问题讨论】:

    标签: python html web-scraping beautifulsoup python-3.5


    【解决方案1】:

    使用BeautifulSoup,这相对简单——想法是通过类和文本定位“里程碑”元素,然后使用.next_sibling 找到下一个兄弟元素:

    from bs4 import BeautifulSoup
    
    
    data = """
    <div>
     <span class="milestone">Announcement:</span>
     "&nbsp; 2 April 2000 "
     <br>
     <span class="milestone">Ground Breaking:</span>
     "&nbsp; 23 February 2002 "
     <br>
    </div>"""
    
    soup = BeautifulSoup(data, "html.parser")
    
    print(soup.find(class_="milestone", text="Announcement:").next_sibling.strip())
    print(soup.find(class_="milestone", text="Ground Breaking:").next_sibling.strip())
    

    打印:

    "  2 April 2000 "
    "  23 February 2002 "
    

    【讨论】:

    • 这正是我所需要的。 .next_sibling 是 BeautifulSoup 库的一部分吗?
    • @mschmidt 是的,这是一个内置方法,很高兴它有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 2020-06-18
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多