Я пытаюсь очистить некоторые спортивные данные с веб-сайта с помощью Beautifulsoup4, но у меня возникли проблемы с выяснением того, как действовать. Я не очень хорошо разбираюсь в HTML, и, похоже, не могу понять последний бит синтаксиса. После анализа данных я собираюсь подключить его к кадру данных Pandas. Я пытаюсь добыть домашнюю команду, гостиную и забивать. Вот мой код до сих пор:Python Beautifulsoup4 parsing
from bs4 import BeautifulSoup
import urllib2
import csv
url = 'http://www.bbc.com/sport/football/premier-league/results'
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
def has_class_but_no_id(tag):
return tag.has_attr('score')
writer = csv.writer(open("webScraper.csv", "w"))
for tag in soup.find_all('span', {'class':['team-away', 'team-home', 'score']}):
print(tag)
вот пример вывода:
<span class="team-home teams">
<a href="/sport/football/teams/newcastle-united">Newcastle</a> </span>
<span class="score"> <abbr title="Score"> 0-3 </abbr> </span>
<span class="team-away teams">
<a href="/sport/football/teams/sunderland">Sunderland</a> </span>
Мне нужно, чтобы сохранить команду (Newcastle), оценка (0-3), и команда гостей (Sunderland) в трех отдельных областях. По сути, я застрял, пытаясь извлечь «значение» из каждого тега и, похоже, не могу понять синтаксис в bs4
. Мне нужно как tag.value
, но все, что я нашел в документации, - tag.name
или tag.attrs
. Любая помощь или указатели будут очень благодарны!
ahh Я, должно быть, пропустил класс для матчей, спасибо! это именно то, что мне нужно. Я не знал, что могу повторить поиск в теге, используя .find. – flyingmeatball