我一直在尝试使用Python和BeautifulSoup从网站中提取一些数据。 我似乎无法找到提取div属性内容的方法。
例如,从中:
<div class= "something">
<div class="a" title="b">
<img class="c" height="d" src="e" width="f" alt="g">
</div>
我想提取标题并获得结果:
b
我试过这个:
for all_data in soup.find_all('div', {'class': 'someClass'}):
for headline in all_data.find_all('div', {'class': 'main-
attributes'}):
for rating in headline.find('div', {'class': 'Something'}):
print(rating)
现在这当然会拉出整个div类。我想要的是拔出标题。 另一件事是当我尝试将整个div类写入CSV时,它会写入空白或者只是弄乱整个CSV。
我真的很感激对此的任何帮助。我是Python和编码的初学者,所以如果这个问题不够具体,我很抱歉。
提前致谢!! 干杯
答案 0 :(得分:0)
find()
返回单个元素而不是列表。所以,你不能像这样迭代:
for rating in headline.find('div', {'class': 'Something'}):
print(rating)
要获取title
属性,您只需在汤对象上使用 ['title']
,就像这样:
>>> html = '''<div class= "something">
<div class="a" title="b">
<img class="c" height="d" src="e" width="f" alt="g">
</div>'''
>>> soup = BeautifulSoup(html, 'lxml')
>>> soup.find('div', class_='something').div
<div class="a" title="b">
<img alt="g" class="c" height="d" src="e" width="f"/>
</div>
>>> soup.find('div', class_='something').div['title']
'b'
或者,更确切地说,您可以使用
soup.find('div', class_='something').find('div', class_='a')['title']
Read the docs了解有关如何获取属性的属性/内容的更多信息。
答案 1 :(得分:0)
如果要使用类title
提取a
元素,可以执行以下操作:
from bs4 import BeautifulSoup
ad= '<div class= "something"> \
<div class="a" title="b"> \
<img class="c" height="d" src="e" width="f" alt="g"> \
</div>'
soup = BeautifulSoup(ad,"lxml").find_all("div", {"class": "a"})
for items in soup:
title=items['title'] #this format is used to fetch attributes of an element
print(title)