如何从标签中提取价值

时间:2017-02-06 04:58:57

标签: python web-scraping beautifulsoup

如何从" txt"中提取选择的值数据

从标签下方我期待" 440615000102-两轮/三轮摩托车"

txt = '[<select class="bg21" name="cyfbh" style="WIDTH: 100%"><option value=""></option> <option value="440615000101">440615000101-passenger car</option> <option selected="" value="440615000102">440615000102-two/three wheeled motorcycle</option></select>]'
datatag =str(txt) 

print datatag


soup = BeautifulSoup(datatag,'lxml')
text_area = soup.find('option', {'selected':'selected'} )

print text_area

当我尝试上面的代码时,我得到了无

2 个答案:

答案 0 :(得分:1)

尝试.text喜欢:

text_area = soup.find('option', {'selected':'selected'} ).text

修改

我犯了一个错误,即没有运行代码,并假设在查找中没有错误。无论如何,下面的代码运行并且有效。

from bs4 import BeautifulSoup

txt = '[<select class="bg21" name="cyfbh" style="WIDTH: 100%"><option value=""></option> <option value="440615000101">440615000101-passenger car</option> <option selected="" value="440615000102">440615000102-two/three wheeled motorcycle</option></select>]'

soup = BeautifulSoup(txt,'html.parser')
text_area = soup.find('option', {'value':'440615000102'}).text
print(text_area)

我使用了python标准解析器“html.parser”,根据this,与lxml的区别在于它的速度。

<强> O / P: output

答案 1 :(得分:0)

text_area = soup.find(lambda tag: tag.name=='option' and tag.has_attr('selected') )

出:

440615000102-two/three wheeled motorcycle

使用has_attr查找代码,代码的selected值为'',空字符串,BS4无法使用以下内容找到:

soup.find('option', {'selected':''} )