6 python beautifulsoup html-parsing
我想使用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>
Run Code Online (Sandbox Code Playgroud)
获取内容的最佳方式是什么?现在我使用以下代码,但我不知道如何使用美丽的汤.如果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))));
Run Code Online (Sandbox Code Playgroud)
jdo*_*dot 15
你不必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')]
Run Code Online (Sandbox Code Playgroud)
有了这个,你可以避免在html文件中出现多个选择区域的问题,因为我们首先限制id='start_dateid'你,这保证了你有权利<select>,因为在每个html文档中每个html元素必须具有唯一的id属性,如果它有一个id属性.然后,我们<option>只在该 <select>标签内搜索所有标签,然后我们从每个标签中获取所有值<option>.