使用 Beautifulsoup 4 和 Python 2.7 解析 Web 表单
Parsing a web form using Beautifulsoup 4 and Python 2.7
我有以下代码解析 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
上面returns下面:
<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>
我想要做的是创建一个字典,例如,键是“4”,值是 'cars'。所以,每个选项值都是一个键,描述就是值。
我正在考虑进行一些切片(即从字符 14 切片到 X 以获得数字),但我想知道是否有更有效的方法来执行此操作。另外,我希望忽略也返回的第一行。我只想将 "option value" 解析到字典中,而不是 "option selected"。另外,可以看出,一些值/描述前面有 "· "
- 我也希望忽略它。
可以提供任何帮助吗?
想法是找到所有具有 value
而没有 selected
属性的 option
元素;使用字典理解来制作字典:
# -*- 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'
}
我有以下代码解析 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
上面returns下面:
<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>
我想要做的是创建一个字典,例如,键是“4”,值是 'cars'。所以,每个选项值都是一个键,描述就是值。
我正在考虑进行一些切片(即从字符 14 切片到 X 以获得数字),但我想知道是否有更有效的方法来执行此操作。另外,我希望忽略也返回的第一行。我只想将 "option value" 解析到字典中,而不是 "option selected"。另外,可以看出,一些值/描述前面有 "· "
- 我也希望忽略它。
可以提供任何帮助吗?
想法是找到所有具有 value
而没有 selected
属性的 option
元素;使用字典理解来制作字典:
# -*- 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'
}