通过Python从特定id获取HTML元素值

时间:2018-04-22 00:19:05

标签: python html bottle

所以,我在PythonAnywhere中有一个Bottle页面,它在我的SQLite数据库中显示了一个项目列表。在每个可点击的项目中,我想根据所单击的列表项的名称从数据库中为其他页面提供相关信息。

所以在这种情况下,我想获取这个元素的值,并通过Python在我的SQLite查询中使用该变量。

<ons-list-item id="itembtn" name="itembtn" value="{{ record [0] }}" tappable>

但是,据我所知,HTML元素的值无法检索。我想知道是否有人知道如何用Python获取这个动态值。

<!-- Parts showing from database -->
        <template id="caseFanResult.html">
            <% result = c.execute("SELECT * FROM caseFanPart")%>
                <ons-page id="caseFanResult">
                    <ons-toolbar>
                        <div class="left">
                            <ons-back-button>Back</ons-back-button>
                        </div>
                        <div class="center">Case Fan Parts</div>
                    </ons-toolbar>
                    <ons-list modifier="material">
                        %for record in result:
                        <ons-list-item id="itembtn" name="itembtn" value="{{ record [0] }}" tappable>
                            <div class="center">
                                <span class="list-item__title">{{ record[1] }}</span>
                                <span class="list-item__subtitle">{{ record[2] }}</span>
                            </div>
                        </ons-list-item>
                        %end
                    </ons-list>
                </ons-page>
        </template>

        <!-- Parts detailed spec sheet -->
        <template id="itemResult.html">
            <% 
            id = request.form.get("itembtn","")
            itemResult = c.execute("SELECT * FROM caseFanPart WHERE caseFanID = ?", (id,))
            %>

                <ons-page id="itemResult">
                    <ons-toolbar>
                        <div class="left">
                            <ons-back-button>Back</ons-back-button>
                        </div>
                        <div class="center">Spec Sheet</div>
                    </ons-toolbar>
                    <ons-list modifier="material">
                        %for item in itemResult:
                        <ons-list-header>{{ item[1] }}</ons-list-header>
                        <ons-list-item>Price: {{ item[2] }}</ons-list-item>
                        <ons-list-item>Rating: {{ item[3] }}</ons-list-item>
                        <ons-list-item>Color: {{ item[4] }}</ons-list-item>
                        <ons-list-item>Size: {{ item[5] }}</ons-list-item>
                        <ons-list-item>RPM: {{ item[6] }}</ons-list-item>
                        <ons-list-item>Airflow: {{ item[7] }}</ons-list-item>
                        <ons-list-item>Noise Level:{{ item[8] }}</ons-list-item>
                        %end
                    </ons-list>
                </ons-page>
        </template>

1 个答案:

答案 0 :(得分:1)

这是从HTML元素中提取值所需要做的事情

import bs4 as bs

word = '<ons-list-item id="itembtn" name="itembtn" value="{{ record [0] }}" tappable>'

soup = bs.BeautifulSoup(word,'lxml')

supa = soup.find('ons-list-item',attrs={'id' : 'itembtn'})

value = supa.get('value')
#print(value)

#to find all values 
valuelist = []
supa = soup.find_all('ons-list-item',attrs={'id' : 'itembtn'})
for val in supa: 
    value = val.get('value')
    valuelist.append(value)
print(valuelist)