簡體   English   中英

基本的Python /美麗的湯解析

[英]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')])

錯誤消息是dateNone 您沒有顯示足夠的代碼來說明原因。 實際上,使用您以最直接的方式發布的代碼應該有效:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM