Я изучаю красивый суп и словари на Python. Я следую короткому учебному курсу в Beautiful Soup от Стэнфордского университета, который можно найти здесь: http://web.stanford.edu/~zlotnick/TextAsData/Web_Scraping_with_Beautiful_Soup.htmlСохранение значений, полученных Beautiful Soup, в словаре, а затем доступ к этим значениям
Поскольку доступ к веб-сайту запрещен, я сохранил текст, представленный в учебнике, в строку, а затем преобразовал суп-суп в суп-объект , Распечатка выглядит следующим образом:
print(soup_string)
<html><body><div class="ec_statements"><div id="legalert_title"><a
href="/Legislation-and-Politics/Legislative-Alerts/Letter-to-Senators-
Urging-Them-to-Support-Cloture-and-Final-Passage-of-the-Paycheck-
Fairness-Act-S.2199">'Letter to Senators Urging Them to Support Cloture
and Final Passage of the Paycheck Fairness Act (S.2199)
</a>
</div>
<div id="legalert_date">
September 10, 2014
</div>
</div>
<div class="ec_statements">
<div id="legalert_title">
<a href="/Legislation-and-Politics/Legislative-Alerts/Letter-to-
Representatives-Urging-Them-to-Vote-on-the-Highway-Trust-Fund-Bill">
Letter to Representatives Urging Them to Vote on the Highway Trust Fund Bill
</a>
</div>
<div id="legalert_date">
July 30, 2014
</div>
</div>
<div class="ec_statements">
<div id="legalert_title">
<a href="/Legislation-and-Politics/Legislative-Alerts/Letter-to-Representatives-Urging-Them-to-Vote-No-on-the-Legislation-Providing-Supplemental-Appropriations-for-the-Fiscal-Year-Ending-Sept.-30-2014">
Letter to Representatives Urging Them to Vote No on the Legislation Providing Supplemental Appropriations for the Fiscal Year Ending Sept. 30, 2014
</a>
</div>
<div id="legalert_date">
July 30, 2014
</div>
</div>
<div class="ec_statements">
<div id="legalert_title">
<a href="/Legislation-and-Politics/Legislative-Alerts/Letter-to-Senators-Urging-Them-to-Vote-Yes-
on-the-Motion-to-Proceed-to-the-Emergency-Supplemental-Appropriations-Act-of-2014-S.2648"></a></div></div></body></html>
В какой-то момент учитель фиксирует все элементы в объекте супа, которые имеют метку «ДИВ», класс _ = «ec_statements».
letters = soup_string.find_all("div", class_="ec_statements")
Затем воспитатель говорит:
«Мы пройдем все пункты в нашей коллекции писем, и для каждого из них, вытащить имя и сделать его ключевым в нашем Сыроватского. значение будет другим dict, но мы еще не нашли содержимое для других элементов, поэтому мы просто создадим назначение пустого объекта dict. "
Код следующее:
lobbying = {}
for element in letters:
lobbying[element.a.get_text()] = {}
Однако при печати ключи и значения словаря лоббистской я обнаружил, что последний элемент - «Письмо к сенаторам поджимающего-Them-to Vote-Yes-on-the-Motion-to-Pro-to-the-Emergency-Supplemental-Asspriations-Act-of-2014-S.2648 "- отсутствует. Вместо этого существовал пустой словарь без назначенного ему ключа.
for key, value in lobbying.iteritems():
print key, value
{}
Letter to Representatives Urging Them to Vote No on the Legislation Providing Supplemental Appropriations for the Fiscal Year Ending Sept. 30, 2014
{}
Letter to Representatives Urging Them to Vote on the Highway Trust Fund Bill
{}
'Letter to Senators Urging Them to Support Cloture and Final Passage of the Paycheck Fairness Act (S.2199)
{}
Как вы это объясните? Ваш совет будет оценен по достоинству.
последний 'div' не имеет текста, поэтому он создает элемент с пустой строкой в качестве ключа. И вы видите это как «пустой словарь без назначенного ему ключа». – furas
BTW: используйте, по крайней мере, 'print"> ", key," <"', и вы увидите, что у вас есть ключ, который является пустой строкой или имеет только 'пробелы',' tabs' и 'enters' – furas