Python 使用BeautifulSoup从列表中的所有项目中获取文本
我编写了以下代码:Python 使用BeautifulSoup从列表中的所有项目中获取文本,python,html,beautifulsoup,Python,Html,Beautifulsoup,我编写了以下代码: 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') 现在我
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')
现在我想将每个元素的文本(即“占位符”、“种族”)保存到一个变量中。我可以对单个变量执行此操作:
x = soup.find_all('option')[0].text
但并非所有变量都适用:
x = soup.find_all('option')[:].text
我知道,假设列表的大小总是相同的,这很容易做到,但我希望能够选择列表中的所有元素,而不管大小如何。这样,如果我在另一个网页上应用代码,它仍然可以工作(据我所知,该网页的下拉列表可能由7个元素组成)而不是
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'))
与
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'))
明亮的谢谢,太棒了。非常感谢。