使用 BeautifulSoup 从 select 中提取 ID 和选项,并将它们排列在 Pandas 数据框中
Extraction of ids and options from select using BeautifulSoup and arranging them in Pandas dataframe
我提取了以下 html 代码:
<select class="class1", id="id1">
<option value="0">A1</option>
<option value="1">A2</option>
<option value="2">A3</option>
<option value="3">A4</option>
<option value="4">A5</option>
<option value="5">A6</option>
</select>
.
.
.
<select class="class2", id="id2">
<option value="0">B1</option>
<option value="1">B2</option>
<option value="2">B3</option>
</select>
.
.
<select class="class3", id="id3">
<option value="0">C1</option>
<option value="1">C2</option>
<option value="2">C3</option>
<option value="2">C4</option>
</select>
我需要提取每个 select 的选项和相应的 id,并将它们排列成一个 Pandas 数据框,类似于:
id
option
id1
A1
id1
A2
id1
A3
id2
B1
id2
B2
id2
B3
id3
C1
id3
C2
id3
C3
id3
C4
我建议为此使用 BeautifulSoup
。
from bs4 import BeautifulSoup
parser = BeautifulSoup(s)
d = {'id': [],'option': []}
for s in parser.find_all('select'):
for o in s.find_all('option'):
d['id'].append(s['id'])
d['option'].append(o.text)
df = pd.DataFrame(d)
输出:
>>> df
id option
0 id1 A1
1 id1 A2
2 id1 A3
3 id1 A4
4 id1 A5
5 id1 A6
6 id2 B1
7 id2 B2
8 id2 B3
9 id3 C1
10 id3 C2
11 id3 C3
12 id3 C4
我提取了以下 html 代码:
<select class="class1", id="id1">
<option value="0">A1</option>
<option value="1">A2</option>
<option value="2">A3</option>
<option value="3">A4</option>
<option value="4">A5</option>
<option value="5">A6</option>
</select>
.
.
.
<select class="class2", id="id2">
<option value="0">B1</option>
<option value="1">B2</option>
<option value="2">B3</option>
</select>
.
.
<select class="class3", id="id3">
<option value="0">C1</option>
<option value="1">C2</option>
<option value="2">C3</option>
<option value="2">C4</option>
</select>
我需要提取每个 select 的选项和相应的 id,并将它们排列成一个 Pandas 数据框,类似于:
id | option |
---|---|
id1 | A1 |
id1 | A2 |
id1 | A3 |
id2 | B1 |
id2 | B2 |
id2 | B3 |
id3 | C1 |
id3 | C2 |
id3 | C3 |
id3 | C4 |
我建议为此使用 BeautifulSoup
。
from bs4 import BeautifulSoup
parser = BeautifulSoup(s)
d = {'id': [],'option': []}
for s in parser.find_all('select'):
for o in s.find_all('option'):
d['id'].append(s['id'])
d['option'].append(o.text)
df = pd.DataFrame(d)
输出:
>>> df
id option
0 id1 A1
1 id1 A2
2 id1 A3
3 id1 A4
4 id1 A5
5 id1 A6
6 id2 B1
7 id2 B2
8 id2 B3
9 id3 C1
10 id3 C2
11 id3 C3
12 id3 C4