我正在抓取我的Android应用程序所需的webpage。我想要做的是从href
属性中提取国家/地区。这与此one相同。
这是我的代码:
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')
我遇到的问题是,结果会返回包含其他a
的所有div
标记
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
中过滤<div id="content">
。 docs没有太多信息。
对不起,这是我第一次写python。
答案 0 :(得分:3)
使用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'})
说的话。它会找到id
content
(<div id="content">
匹配的div标签。
.findAll()
...找到所有! 'a'
用作查找所有标记的参数。它返回每个标签的列表。
然后我只需打印每个标签的href
。
答案 1 :(得分:2)
尝试
li = soup.select("#content ul > li > a")
而不是
li = soup.select("ul > li > a")
答案 2 :(得分:0)
这样做:
li = soup.select("#content ul > li > a")
例如:
li = soup.select("#[call india][1] ul > li > a")