Найдя все <ul>
, я хотел бы дополнительно извлечь текст и href
. Проблема, с которой я сталкиваюсь особенно в этом фрагменте HTML, заключается в том, что мне нужно больше всего, но не все <li>
элементов на странице. Я вижу, что когда я find_all()
, мне возвращается объект списка, который не позволяет мне далее перемещаться по нему как объект супа.
Например, в приведенном ниже фрагменте, чтобы в конечном итоге создать словарь {'cityName': 'href',}
, я попытался:
city_list = soup.find_all('ul', {'class': ''})
city_dict = {}
for city in city_list:
city_dict[city.text] = city['href']
Вот пример минимального HTML:
<h4>Alabama</h4>
<ul>
<li><a href="https://auburn.craigslist.org/">auburn</a></li>
<li><a href="https://bham.craigslist.org/">birmingham</a></li>
<li><a href="https://tuscaloosa.craigslist.org/">tuscaloosa</a></li>
</ul>
<h4>Alaska</h4>
<ul>
<li><a href="https://anchorage.craigslist.org/">anchorage / mat-su</a></li>
<li><a href="https://juneau.craigslist.org/">southeast alaska</a></li>
</ul>
<h4>Arizona</h4>
<ul>
<li><a href="https://flagstaff.craigslist.org/">flagstaff / sedona</a></li>
<li><a href="https://yuma.craigslist.org/">yuma</a></li>
</ul>
<ul>
<li><a href="https://www.craigslist.org/about/help/">help</a></li>
<li><a href="https://www.craigslist.org/about/scams">safety</a></li>
<li class="fsel mobile linklike" data-mode="regular">desktop</li>
</ul>
Как я могу, по сути, find_all()
сначала ul
, а затем найти только li
, которые меня интересуют?
2 ответа
city_dict = {}
for li in soup.find_all('li'):
city_name = li.text
for link in li.find_all('a'):
city_dict[city_name] = link['href']
Попробуйте это, спасибо мне позже :)
list_items = soup.find_all('ul',{'class':''})
list_of_dicts = []
for item in list_items:
for i in item.find_all('li'):
new_dict = {i.text:i.a.get('href')}
list_of_dicts.append(new_dict)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.