【发布时间】:2015-04-20 05:31:03
【问题描述】:
我昨天问了一个问题,很清楚,但我现在有一个更棘手的问题。
首先,显示我要解析的这个 html 结构
<body>
<div id="links">
<a href='url1'>apple-explain</a>
<blackquote>
<a href='url1'>link-1</a>
</blackquote>
</div>
<div id="info">
<p>apple</p></div>
<div id="links">
<a href='batch_url1'>bear-explain</a>
<blackquote>
<a href='url2'>link-1</a>
<a href='url3'>link-2</a>
</blackquote>
</div>
<div id="info">
<p>bear</p></div>
<div id="links">
<a href='url4'>cat-explain</a>
<blackquote>
<a href='url4'>link-1</a>
</blackquote>
</div>
<div id="info">
<p>cat</p></div>
<div id="links">
<a href='batchurl2'>duck-explain</a>
<blackquote>
<a href='url5'>link-1</a>
<a href='url6'>link-2</a>
<a href='url7'>link-3</a>
</blackquote>
</div>
<div id="info">
<p>duck</p></div>
<div id="links">
<a href='url8'>egg-explain</a></div>
<blackquote>
<a href='url8'>link-1</a>
</blackquote>
</div>
<div id="info">
<p>egg</p></div>
#etc
</body>
看起来略长,但结构简单
<div id="links">
<a href=url>some explain</a>
<blackquote>
<a href=url>link number</a>
</blackquote></div>
<div id="info">
<p>info keyword</p></div>
这是我的目的
到“抓取所有网址,删除重复,并将它们与信息关键字匹配”。
例如,apple 部分有两个 ,但它们是相同的 href 和bear部分,它有3个和3个href,一个在the中,两个在
我想清除元组并打印
元组是
(apple, url1)
(bear, [batch_url1, url2, url3])
etc...
打印出来的表格
url1 = apple
batch_url1 = bear
url2 = bear
url3 = bear
etc
这是我的代码,
soup = BeautifulSoup("""that HTML""")
url_list = soup.find_all('div', attrs={'id': 'links'})
info_list = soup.find_all('div', attrs={'id': 'links'})
for url, info in zip(url_list, info_list):
for temp in url.find_all():
infokeyword = info.text
urls = temp.attrs['href']
zipped = zip(infokeyword, urls)
d=len(infokeyword)
for n in range(0, d+1):
print(str(infokeyword[n]) + " = " + str(urls[n])
运行时,结果如下:
Traceback (most recent call last):
File "D:/Users/Hyungsoo/PycharmProjects/untitled1/zx.py", line 59, in <module>
urls = temp.attrs['href']
KeyError: 'href'
我怎样才能做到这样?
【问题讨论】:
标签: html parsing python-3.x beautifulsoup