我想使用 BeautifulSoup 来获取以下 html 中的选项文本。例如:我想获取 2002/12 、 2003/12 等。
<select id="start_dateid">
<option value="0">2002/12</option>
<option value="1">2003/12</option>
<option value="2">2004/12</option>
<option value="3">2005/12</option>
<option value="4">2006/12</option>
<option value="5" selected="">2007/12</option>
<option value="6">2008/12</option>
<option value="7">2009/12</option>
<option value="8">2010/12</option>
<option value="9">2011/12</option>
</select>
获取内容的最佳方式是什么?现在我正在使用以下代码,但我不知道如何使用 beautiful soup 来实现这一点。如果 html 文件中有多个选定区域,结果将不正确。这是我到目前为止所拥有的:
import urllib2
from bs4 import BeautifulSoup
import lxml
soup = BeautifulSoup(urllib2.urlopen("./test.html").read(),"lxml");
for item in soup.find_all('option'):
print(''.join(str(item.find(text=True))));
你不必使用lxml
这里。我在我的机器上安装它时遇到问题,所以我的答案没有使用它。
from bs4 import BeautifulSoup as BS
import urllib2
soup = BS(urllib2.urlopen("./test.html").read())
contents = [str(x.text) for x in soup.find(id="start_dateid").find_all('option')]
这样,您就可以避免 html 文件中多个选择区域的问题,因为我们首先限制id='start_dateid'
,这向您保证您有权利<select>
,因为在每个 html 文档中,每个 html 元素必须有一个唯一的id
属性,如果它有一个id
属性。然后,我们要寻找所有的<option>
标签仅在that <select>
标签,然后我们从每个标签中获取所有值<option>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)