这是我第一次使用BeautifulSoup。
我有test.html
<html>
<body>
<div class='ts'>2012-03-14 09:17:55.433 +0300 </div><div class='log'>No Error</div>
<div class='ts'>2012-03-14 12:18:55.433 +0300 </div><div class='log'>Error: Missing module.</div>
</body>
</html>
我想找到div
标记和ts
log
的所有行,并在终端上打印出这样的结果
<div class='ts'>2012-03-14 09:17:55.433 +0300 </div><div class='log'>No Error</div>
<div class='ts'>2012-03-14 12:18:55.433 +0300 </div><div class='log'>Error: Missing module.</div>
到目前为止我的代码
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("test.html"))
def find_ts_and_log():
items = soup.select('div.ts') + soup.select('div.log')
for item in items:
print item
find_ts_and_log()
但是这个脚本给了我这个结果
<div class='ts'>2012-03-14 09:17:55.433 +0300 </div>
<div class='ts'>2012-03-14 12:18:55.433 +0300 </div>
<div class='log'>No Error</div>
<div class='log'>Error: Missing module.</div>
感谢您的帮助。
答案 0 :(得分:1)
您可以将find_all()
与class_
过滤器结合使用:
items = soup.find_all('div', class_=['ts','log'])
for item in items:
print item
或者您可以先找到div.ts
,然后从log
属性中获取相应的next_sibling
:
items = soup.select('div.ts')
for item in items:
print item, item.next_sibling