这些是我使用 python 的第一步,请多多包涵。
基本上我想用 Beautiful Soup 从单个 Dokuwiki 页面解析目录。目录如下所示:
<div id="dw__toc">
<h3 class="toggle">Table of Contents</h3>
<div>
<ul class="toc">
<li class="level1"><div class="li"><a href="#section">#</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#link1">One</a></div></li>
<li class="level2"><div class="li"><a href="#link2">Two</a></div></li>
<li class="level2"><div class="li"><a href="#link3">Three</a></div></li>
我希望能够搜索 a-tags 的内容,如果找到结果,则返回其内容并返回 href-link。所以如果我搜索“一个”,结果应该是
One
#link1
到目前为止我做了什么:
#!/usr/bin/python2
from BeautifulSoup import BeautifulSoup
import urllib2
#Grab and open URL, create BeatifulSoup object
url = "http://www.somewiki.at/wiki/doku.php"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
#Grab Table of Contents
grab_toc = soup.find('div', {"id":"dw__toc"})
#Look for all divs with class: li
ftext = grab_toc.findAll('div', {"class":"li"})
#Look for links
links = grab_toc.findAll('a',href=True)
#Iterate
for everytext in ftext:
text = ''.join(everytext.findAll(text=True))
data = text.strip()
print data
for everylink in links:
print everylink['href']
这会打印出我想要的数据,但我有点迷失了重写它以便能够在结果中搜索并且只返回搜索项。尝试过类似的东西
if data == 'searchtearm':
print data
break
else:
print 'Nothing found'
但这是一种弱搜索。有没有更好的方法来做到这一点?在我的示例中,Beatiful Soup 结果集已更改为列表。首先在结果集中搜索是否更好,如果是这样,那么如何做到这一点?