使用Beautifulsoup4和Python 2.7解析web表单
我有以下解析HTML以提取URL表单字段的代码:-使用Beautifulsoup4和Python 2.7解析web表单,python,html,python-2.7,beautifulsoup,html-parsing,Python,Html,Python 2.7,Beautifulsoup,Html Parsing,我有以下解析HTML以提取URL表单字段的代码:- import urllib2 from bs4 import BeautifulSoup url = "http://www.myurl.com" soup = BeautifulSoup(urllib2.urlopen("./test.html").read()); for tag in soup.find_all('option'): print tag 上面返回的结果如下: <option selected="" va
import urllib2
from bs4 import BeautifulSoup
url = "http://www.myurl.com"
soup = BeautifulSoup(urllib2.urlopen("./test.html").read());
for tag in soup.find_all('option'):
print tag
上面返回的结果如下:
<option selected="" value="">any</option>
<option value="4">cars</option>
<option value="61">· motorbikes</option>
<option value="5">· boats</option>
<option value="17">planes</option>
<option value="40">· submarines</option>
any
汽车
·摩托车
·船只
飞机
·潜艇
我想做的是创建一个字典,这样,键将是,例如'4',值将是'cars'。因此,每个选项值都是一个键,描述就是值
我正在考虑做一些切片(即从字符14到X切片以获得数字),但我想知道是否有更有效的方法来实现这一点。另外,我希望忽略返回的第一行。我只想将“option value”解析到字典中,而不是“option selected”。此外,可以看到,一些值/描述前面带有“·”
——我也希望忽略这一点
可以提供任何帮助吗?这个想法是找到所有
选项
元素,这些元素具有值
,并且没有选定属性
;使用词典理解制作词典:
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
data = u"""
<select>
<option selected="" value="">any</option>
<option value="4">cars</option>
<option value="61">· motorbikes</option>
<option value="5">· boats</option>
<option value="17">planes</option>
<option value="40">· submarines</option>
</select>
"""
soup = BeautifulSoup(data)
print {option['value']: option.text.lstrip(u"· ")
for option in soup.find_all('option', value=True, selected=False)}
{
'61': u'motorbikes',
'5': u'boats',
'4': u'cars',
'17': u'planes',
'40': u'submarines'
}