我已经写了这段代码:
from bs4 import BeautifulSoup
import urllib2
url = "http://racing4everyone.eu/2016/03/12/formula-e-201516-round05-mexico/"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read(), "html.parser")
options = soup.find_all('option')
现在我想将每个元素的文本(即'占位符'' Race')保存到变量中。我可以为一个变量做到这一点:
x = soup.find_all('option')[0].text
但不适用于所有变量:
x = soup.find_all('option')[:].text
我知道假设列表总是大小相同很容易,但我希望能够选择列表中的所有元素而不管大小。这样,如果我在其他网页上应用代码,它仍然可以使用(该网页的下拉列表可能包含7个元素,供我所知)
答案 0 :(得分:2)
而不是x = soup.find_all('option')[:].text
,您应该从迭代器中的每个项目中获取文本,如下所示:
x = [x.text for x in soup.find_all('option')]
这样,您就可以从所有项目中获取文本属性。如果您希望以最有效的方式执行时间,可以使用:
import operator
x = map(operator.attrgetter("text"), soup.find_all('option'))