我正在尝试解析此页面 http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary 并获得
标题, 描述
每个部分就是这样,没有标签。
我解析了该页面并尝试搜索所有<title>
和<p>
标记,但它不会产生正确的结果。
我使用的是Python 2.7和BeautifulSoup 3-2-0
以下是我的代码示例:
import urllib2, sys
address = sys.argv[1]
html = urlib2.urlopen(http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary).read()
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
def printText(tags):
for tag in tags:
if tag._class_==NavigableString:
print tag,
else:
printText(tag)
print ""
printText(soup.findALL("p"))
print "".join(soup.findALL("p", text=re.compile(".")))
答案 0 :(得分:0)
我不完全确定您在寻找什么,但我怀疑您希望从此页面中获取术语和定义。正在寻找&lt; title&gt;和&lt; p&gt;标签并不是你真正需要的。您应该查找使标记唯一的属性。在这种情况下,查看&lt; span&gt;标记显示有一个唯一标记术语的类属性。这可用于隔离您需要的部分。我建议更仔细地查看find / findAll的文档。下面是一些代码,可以帮助您完成大部分工作。
from BeautifulSoup import BeautifulSoup
import urllib
url = 'http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary'
soup = BeautifulSoup(urllib.urlopen(url))
paragraphs = [x.parent for x in soup.findAll(name='span',attrs={'class':'definition'}) if x.parent.name == 'p']
for p in paragraphs:
name = p.find(name='span',attrs={'class':'definition'}).text
text = p.text.replace(name,'')
print '-'*80
print name
print text