使用 Python 从 HTML 中获取 div
Posted
技术标签:
【中文标题】使用 Python 从 HTML 中获取 div【英文标题】:get div from HTML with Python 【发布时间】:2014-01-25 08:35:48 【问题描述】:我想从 html 页面中获取某个 div 中的值
<div class="well credit">
<div class="span2">
<h3><span>
$ 5.402
</span></h3>
</div>
</div>
我已经使用正则表达式 ( re.seach() ) 完成了它,但它需要很长时间才能找到 div,因为它是一个巨大的 html。
有没有办法在没有外部库的情况下更快地做到这一点?
谢谢
【问题讨论】:
好吧。考虑使用lxml
。这是一个内置的
对不起,如果这是一个简单的建议,但如果您确切知道div
将如何编码,为什么不直接使用find
,可能是递归的?
【参考方案1】:
Scrapy 也可能是一个解决方案。请阅读http://doc.scrapy.org/en/latest/topics/selectors.html
x = sel.xpath('//div[@class="span2"]')
for i in x:
print i.extract()
输出:
<div class="span2">
<h3><span>
$ 5.402
</span></h3>
</div>
【讨论】:
【参考方案2】:Python 在标准库中只有一个 HTML 解析器,而且它非常低级,所以如果你想使用 HTML,你必须安装 一些 类的 HTML 解析库。 p>
lxml 是迄今为止最快的:
import lxml.html
root = lxml.html.parse(handle)
price = root.xpath('//div[@class="well credit"]//span/@text')[0]
如果您希望它更快,请使用 root.iter
并在您点击正确的元素后停止解析 HTML。
【讨论】:
【参考方案3】:我会使用BeautifulSoup
!
使用<div>
标签获取所有内容:
soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div')
要获取 span 内的值,您可以这样做:
soup.find('span').get_text()
有很多不同的方法可以获取您需要的信息
祝你好运,希望这会有所帮助!
【讨论】:
谢谢,它工作得很好:)。我使用 credits = soup.find_all("div", "class" : "well credit") 来更具体一点,并且 html 上有更多带有信用的 div以上是关于使用 Python 从 HTML 中获取 div的主要内容,如果未能解决你的问题,请参考以下文章