python爬虫,用find_all()找到某一标签后,怎么获取下面数个同名子标签的内容 5
r=requests.get(link,headers=header,timeout=20)soup=BeautifulSoup(r.text,'lxml')div=so...
r=requests.get(link,headers=header,timeout=20)soup=BeautifulSoup(r.text,'lxml') div=soup.find_all('div',class_="star")如图,用find_all找到这个标签后,下面有4个<span>标签,怎么同时获取它们的内容放入一个列表里输出啊?
展开
4个回答
展开全部
#!/usr/bin/env python
# coding:utf-8
from bs4 import BeautifulSoup
#这个data 可以替换成你的 div=soup.find_all('div',class_="star")
#取的时候 记得循环处理
data = '''
<div>
<span class='a' protype='d'>1</span>
<span class='a' protype='d'>2</span>
<span class='a' protype='d'>3</span>
<span class='a' protype='d'>4</span>
</div>
'''
soup = BeautifulSoup(data, 'lxml')
spans = soup.find_all('span')
span_content=[]
for i in spans:
print i ,i.text #这里取标签span的内容
span_content.append(i.text)
print span_content
------------------------
<span class="a" protype="d">1</span> 1
<span class="a" protype="d">2</span> 2
<span class="a" protype="d">3</span> 3
<span class="a" protype="d">4</span> 4
[u'1', u'2', u'3', u'4']
追问
谢谢这么认真回我啦,这个问题困惑了我很久。
如果只解析一段,这样确实可以解决问题。
但是我是在一个网页中,有多段这样的代码(就是多个这样的data),如果没个都复制下来放在代码里,不现实啊。
所以我才用了find_all()搜寻到多段这样的,作为一个列表返回,然后我就不知道该怎么读取里面4个的内容了。
这该怎么弄啊?希望能继续解答,或者加个什么好友,多谢帮助啊。
展开全部
div=soup.find_all('div',class_="star") #此时已经将标签为div,class=star的所有内容列出
你可以在这个数据的基础上,再进行一次find_all来进行查找<span>标签。
例:
for k in soup.find_all('div',class_="star"):
cont=k.find_all('span') #将第一步find_all出来的值再进行find_all
print(cont[0].string) #由于一个div标签里有四个'span',所以是列表形式cont[0],取第几个值就看你的需求了。
我也是新手,纯交流。
你可以在这个数据的基础上,再进行一次find_all来进行查找<span>标签。
例:
for k in soup.find_all('div',class_="star"):
cont=k.find_all('span') #将第一步find_all出来的值再进行find_all
print(cont[0].string) #由于一个div标签里有四个'span',所以是列表形式cont[0],取第几个值就看你的需求了。
我也是新手,纯交流。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
items = soup.find_all(class_='star')
for item in items :
t1 = item.find(class_='rating5-t')
num = item.find(class_='rating_num')
be1=item.find(proprety)
be2 = item.find(prperty='v.best')
print(t1.text,'\n',num.text,'\n',be1.text,'\n',be2.text,'\n',)
仅供参考
for item in items :
t1 = item.find(class_='rating5-t')
num = item.find(class_='rating_num')
be1=item.find(proprety)
be2 = item.find(prperty='v.best')
print(t1.text,'\n',num.text,'\n',be1.text,'\n',be2.text,'\n',)
仅供参考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-12-26
展开全部
用for,找了好久才找到解决办法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询