[英]Basic Python/Beautiful Soup Parsing
說我用過
date = r.find('abbr')
要得到
<abbr class="dtstart" title="2012-11-16T00:00:00-05:00">November 16, 2012</abbr>
我只想打印November 16, 2012
,但如果我試試
print date.string
我明白了
AttributeError: 'NoneType' object has no attribute 'string'
我究竟做錯了什么?
答案:這是我用於學習目的的最終工作代碼:
soup = BeautifulSoup(page)
calendar = soup.find('table',{"class" : "vcalendar ical"})
dates = calendar.findAll('abbr', {"class" : "dtstart"})
events = calendar.findAll('strong')
for i in range(1,len(dates)-1):
print dates[i].string + ': ' + events[i].string
soup.find('abbr').string
應該可以正常工作。 date
肯定有問題。
from BeautifulSoup import BeautifulSoup
doc = '<abbr class="dtstart" title="2012-11-16T00:00:00-05:00">November 16, 2012</abbr>'
soup = BeautifulSoup(doc)
for abbr in soup.findAll('abbr'):
print abbr.string
結果:
November 16, 2012
根據添加到問題的代碼進行更新:
你不能像這樣使用text
參數。
http://www.crummy.com/software/BeautifulSoup/documentation.html#arg-text
text是一個參數,可讓您搜索NavigableString對象而不是Tags
要么你正在尋找文本節點,要么你正在尋找標簽。 文本節點不能具有標記名稱。
也許你想要''.join([el.string for el in r.findAll('strong')])
?
錯誤消息是date
為None
。 您沒有顯示足夠的代碼來說明原因。 實際上,使用您以最直接的方式發布的代碼應該有效:
import BeautifulSoup
content='<abbr class="dtstart" title="2012-11-16T00:00:00-05:00">November 16, 2012</abbr>'
r=BeautifulSoup.BeautifulSoup(content)
date=r.find('abbr')
print(date.string)
# November 16, 2012
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.