所以我之前问了一个关于从html页面检索高分的问题,另一个用户给了我以下代码来帮助。我是python和beautifulsoup的新手,所以我试图逐个完成其他一些代码。我理解其中的大部分内容但是我不知道这段代码是什么以及它的功能是什么:
def parse_string(el):
text = ''.join(el.findAll(text=True))
return text.strip()
以下是整个代码:
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
import sys
URL = "http://hiscore.runescape.com/hiscorepersonal.ws?user1=" + sys.argv[1]
# Grab page html, create BeatifulSoup object
html = urlopen(URL).read()
soup = BeautifulSoup(html)
# Grab the <table id="mini_player"> element
scores = soup.find('table', {'id':'mini_player'})
# Get a list of all the <tr>s in the table, skip the header row
rows = scores.findAll('tr')[1:]
# Helper function to return concatenation of all character data in an element
def parse_string(el):
text = ''.join(el.findAll(text=True))
return text.strip()
for row in rows:
# Get all the text from the <td>s
data = map(parse_string, row.findAll('td'))
# Skip the first td, which is an image
data = data[1:]
# Do something with the data...
print data
答案 0 :(得分:3)
el.findAll(text=True)
返回元素及其子元素中包含的所有文本。通过文字我的意思是不在标签内;所以在<b>hello</b>
中,“hello”就是文字,但<b>
和</b>
不会。
因此,该函数将在给定元素下面找到的所有文本连接在一起,并从正面和背面剥去空白。
以下是findAll
文档的链接:http://www.crummy.com/software/BeautifulSoup/documentation.html#arg-text