1.如果tag最内层只有一个 NavigableString 类型子节点,那么这个tag可以直接使用tag.string 得到子节点
# encoding=utf-8 from bs4 import BeautifulSoup html='''
<td>直接是 可遍历的字符串</td>
<td><a href="#">包含a标签的可遍历字符串</a></td>
<td><div><a href="#">包含a标签和div的可遍历字符串</a></div></td>
'''
soup=BeautifulSoup(html,'html.parser')
tds=soup.find_all('td')
for td in tds:
print 'td:'+str(td)
print 'string:'+td.string
# 总结:如果tag(及其子tag或子孙tag中)只有一个 NavigableString 类型子节点,
# 那么这个tag可以直接使用tag.string 得到子节点 不用写 子孙tag.string
2.使用频率较高的get_text()方法,可获取tag和子孙tag中的内容
如果只想得到tag中包含的文本内容,那么可以用 get_text() 方法,这个方法获取到tag中包含的所有文本
内容包括子孙tag中的内容,并将结果作为Unicode字符串返回。
在爬药智网的时候因为对该方法不熟练,多写了好多代码╮(╯▽╰)╭
html= '<a href="http://example.com/">\nI linked to <i>example.com</i>\n</a>'
soup = BeautifulSoup(html,'html.parser') #直接得到所有的文本,中间包含其他标签也可以
soup.get_text()
#u'\nI linked to example.com\n'
soup.i.get_text()
#u'example.com'
#使用最多的还是去除文本中的前后空白
soup.get_text("|", strip=True)
#u'I linked to|example.com'