使用BeautifulSoup提取特定数据

时间:2014-02-13 10:41:59

标签: python html web-scraping beautifulsoup data-extraction

我想从这个代码段中提取一些数据:

<div id="information_content">
    <b>Name:</b> file.rar <br>
    <b>Date Modified:</b> 2 days ago <br>
    <b>Size:</b> 212.19 MB <br>
    <b>Type:</b> Archive <br>
    <b>Permissions:</b> Public </div>
</div>

我只想提取212.19 MB

我已使用soup.find('div', attrs={'id': 'information_content'})提取了代码段,但我无法弄清楚如何深入挖掘以获得我需要的内容。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

由于BeautifulSoup不支持Xpath,最好的方法是使用lxml

答案 1 :(得分:0)

如果DIV始终具有相同的结构,则可以使用BeautifulSoup按照此说明进行操作。 一旦你提取了DIV,用文本创建一个新的LIST,用'\ n'分割。 然后,只需选择列表中的右侧元素即可。

我做了类似的事情,在这里我解释了我所做的一切: Python和BeautifulSoup:从Quiniela中提取奖品 - http://www.manejandodatos.es/2014/2/python-beautifulsoup-extracting-prizes-quiniela

我希望它有所帮助!

答案 2 :(得分:0)

如前所述,如果这些div的结构总是相同的,那么如果你拆分,大小将在第三个字符串中。

>>>> x = '<div id="information_content"> <b>Name:</b> file.rar <br> <b>Date Modified:</b> 2 days ago <br> <b>Size:</b> 212.19 MB <br> <b>Type:</b> Archive <br> <b>Permissions:</b> Public </div> </div>'
>>>> x.split('<br>')[2]
' <b>Size:</b> 212.19 MB '

从那里你可以使用正则表达式来获得你需要的部分。 例如,此模式匹配此类格式的所有值:

\d+.\d\d\s.B

它匹配10.00 kB以及1000.34 TB