为了账号安全,请及时绑定邮箱和手机立即绑定

beautifulsoup 怎样抓取 select 标签里面的 option 的文本?

beautifulsoup 怎样抓取 select 标签里面的 option 的文本?

繁星coding 2019-04-09 20:23:21
我要抓取的页面的内容是在如下标签内的parent.theZNPKT_CJJS1.innerHTML='[0000789]Andrew';我写的代码:importurllib2frombs4importBeautifulSoupurl='xxx'html=urllib2.urlopen(url)soup=BeautifulSoup(html,from_encoding='gbk')option=soup.findAll('option')f=open("out.txt","w")print>>f,optionf.close()printoption抓取出来的结果全都是[0000049]ANNA这样的,我想提取[0000049]ANNA这个内容怎样做呀?很多东西都不懂,经过搜索换了一种方法提取出来了。用的是正则的方法:importurllib2importreurl='xxx'html=urllib2.urlopen(url).read()patt=re.compile(r'(.+?)')option=patt.findall(html)f=open("out.txt","w")forvalueinoption:printvaluef.writelines(value+'\n')f.close()
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

1.你要抓取的option等内容,很明显,是标签script内部的内容(content/text)
-》所以没法用BeautifulSoup当做标签(的属性)去抓取
2.想要当做属性处理
一种办法:
在获得你所说的:
[0000049]ANNA
后,再去把(用html标签括起来)组合成html,然后再用BeautifulSoup去当做html处理
->就可以获得option这个标签了
->就可以获得option的string了
3.当然,对于你这样的情况,相对来说,用(你已经用了的)正则,比用bs,效率更高。
4.关于beautifulSoup,可参考:
Python专题教程:BeautifulSoup详解
                            
查看完整回答
反对 回复 2019-04-09
?
Qyouu

TA贡献1786条经验 获得超11个赞

option也是个元素,不是属性,你是不是应该写为soup.findAll('selectoption')呢?
我太久没有用BeautifulSoup了,具体的不记得怎么写。
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 2535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信