Извлечение неупорядоченного списка для определенного <div>: BeautifulSoup

Я очищаю эту веб-страницу, необходимую для моего приложения для Android. То, что я хотел бы сделать, – извлечь страны из атрибута href . Это то же самое, что и этот.

Вот мой код:

 from bs4 import BeautifulSoup import urllib2 import re html_page = urllib2.urlopen("http://www.howtocallabroad.com/a.html") soup = BeautifulSoup(html_page) li = soup.select("ul > li > a") for link in li: print link.get('href') 

Проблема, которую я получаю, заключается в том, что результат возвращает все теги, в том числе из других div s

 afghanistan/ albania/ algeria/ american-samoa/ andorra/ angola/ anguilla/ antigua/ argentina/ armenia/ aruba/ ascension/ australia/ austria/ azerbaijan/ codes.html # not needed nanp.html # not needed qa/ # not needed forums/ # not needed 

Я хотел бы узнать, какие функции / функции необходимы для этого. Я хочу только фильтровать href s только в <div id="content"> . Документы не содержат много информации.

Извините, это первый раз, когда я пишу python.

3 Solutions collect form web for “Извлечение неупорядоченного списка для определенного <div>: BeautifulSoup”

Используйте findAll() :

 >>> for i in soup.find('div',{'id':'content'}).findAll('a'): ... print i['href'] ... afghanistan/ albania/ algeria/ american-samoa/ andorra/ angola/ anguilla/ antigua/ argentina/ armenia/ aruba/ ascension/ australia/ austria/ azerbaijan/ 

soup.find('div',{'id':'content'}) Делает то, что он говорит. Он находит тег div, который имеет id content ( <div id="content"> будет сопоставлен).

.findAll() … находит все! 'a' используется как параметр для поиска всех тегов. Он возвращает список каждого тега.

Затем я просто распечатываю href каждого a-тега.

Пытаться

 li = soup.select("#content ul > li > a") 

вместо

 li = soup.select("ul > li > a") 

Сделайте это так:

 li = soup.select("#content ul > li > a") 

Например:

 li = soup.select("#[call india][1] ul > li > a") 
Python - лучший язык программирования в мире.