从网站提取的下拉列表中提取选项

时间:2013-01-21 23:15:31

标签: python parsing html-parsing beautifulsoup

我一直在尝试(不成功)解决这个问题几个小时,需要一些帮助。我使用Firebug来提取几百行HTML,如下所示:

<option value="1b4f4aed-cf1f-4b39-ae27">Foo</option>
<option value="1a05f93f-dd51-449d-b039">Bar</option>
<option value="f62d2d29-29fc-4f7c-9331">Bacon</option>

我将这些行保存到文本文件中。我想要的是(Python首选,使用Ruby作为替代)脚本来打开进程并关闭文件。处理应该导致保存一个新的文本文件,如下所示:

Foo
Bar
Bacon

就是这样。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

根据您上面的评论,我建议使用任何与HTML相关的BeautifulSoup。由于您处于学习阶段的早期阶段,最好将“HTML”与“BeautifulSoup”(而不是regex :)相关联。这是一个非常基本的例子:

In [1]: from bs4 import BeautifulSoup

In [2]: html = """
<option value="1b4f4aed-cf1f-4b39-ae27">Foo</option>
<option value="1a05f93f-dd51-449d-b039">Bar</option>
<option value="f62d2d29-29fc-4f7c-9331">Bacon</option>
"""

In [3]: soup = BeautifulSoup(html)

In [4]: for option in soup.find_all('option'):
   ...:     print option.text
   ...:     
Foo
Bar
Bacon

我们将HTML传递给BeautifulSoup并将其分配给soup变量。现在我们有一个包含HTML和大量方法的对象,以便以用户友好的方式与它进行交互。在这里,我们使用find_all方法(文档here)查找HTML中的所有option标记。现在,当我们迭代时,我们正在迭代Tag个对象,这些对象有自己的特殊属性/方法。在这里,我们选择其中一个(.text)来显示Tag元素的文本(在这种情况下将是标记中包含的文本)。