beautifulsoupfind_all怎样把带有某种属性的标签选出⽽不含该属性的标签不选为了将comments下的所有⽤户评论选出来
每⼀个<li>标签代表⼀个⽤户的评论,就直接⽤find_all('li')了
但发现这⾥有21项,但数了数发现只有20个⽤户,原来啊是这⾥出问题了:
这个li标签是⽤户评论下的⼀张图⽚。
但我们不想选到这个,观察⼀下,⽤户的li含有“data-id”和“id”属性,⽽图⽚没有,如下图:
正则匹配一张图片于是就去百度了⼀下“beautifulsoup find_all怎样把带有某种属性的标签选出⽽不含该属性的标签不选”但没到结果,先是试了试在find_all加⼊属性,想匹配出含有"data-id"属性的“li”标签,但试了⼏个都出问题,就感觉这个⽅法⾏不通。
最后通过翻阅beautifulsoup官⽅⽂档,发现⼀个find_all传⽅法:
于是⾃⼰也写了⼀个⽅法,正好把所有符合条件的都选了出来了
1 soup = BeautifulSoup(open(comment_file,encoding='utf-8'),'lxml')
2 comments = soup.select('divment-list')[0]
3 comments = comments.find_all(lambda tag:tag.has_attr('data-id') and tag.has_attr('id'))如下
后来⼜阅读了⼀下官⽅⽂档,
发现这些⽤户的li都含有id属性,且“id”均含“rev_”开头,所以试了下正则表达式:
也正确的把他们都选出来了!
时隔半年再来写这个⼩爬⾍,还是挺吃⼒啊!所以还是学了之后要多⽤,多巩固,才能迎刃⽽解!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论