У меня есть веб-страница, настроенная следующим образом:
//a bunch of container divs....
<a class="food cat2 isotope-item" href="#" style="position: absolute; left: 45px; top: 0px;">
<div class="background"></div>
<div class="image">
<img src="/assets/score-images/cereal2.png" alt="">
</div>
<div class="score">1148</div>
<div class="name">Cereal with Banana</div>
</a>
<a class="food cat1 isotope-item" href="#" style="position: absolute; left: 215px; top: 0px;">
<div class="background"></div>
<div class="image">
<img src="/assets/score-images/burrito-all.png" alt="">
</div>
<div class="score">2257</div>
<div class="name">Beef & Cheese Burrito</div>
</a>
//hundreds more a tags....
</div>
I'm running this code to extra the name and score of each "a" attribute.
page = requests.get('http://www.eatlowcarbon.org/food-scores')
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
print('HEllO')
foodDict = {}
aTag = soup.findAll('a')
for tag in aTag:
print('HELLO 2')
name = tag.find("div", {"class": "name"}).text
score = tag.find("div", {"class": "score"}).text
foodDict[name] = score
print('hello')
Оба оператора печати успешно выполнены, поэтому второй говорит мне, что я, по крайней мере, вошел в цикл for. Однако я получаю сообщение об ошибке,
File "scrapeRecipe.py", line 40, in <module>
name = tag.find("div", {"class": "name"}).text
AttributeError: 'NoneType' object has no attribute 'text'
Из этого поста я предполагаю, что мой код не находит ни одного div с типом класса, равным «имя» или «оценка», если на то пошло. Я совершенно новичок в питоне. Есть ли у кого-нибудь совет?