Python:从特定href打印数据(带ID标记)

时间:2012-07-30 14:12:09

标签: python beautifulsoup mechanize

我是Python新手并尝试构建我的第一个webscrapers之一。我想去一个页面,打开一堆子页面,在页面上找到一个特定的链接(带有ID),然后我想打印链接数据。现在我得到错误:'list indices必须是整数,而不是str',这意味着我在(至少)最后一行代码中做错了。

我真正不确定的是,我需要做的是从特定链接中获取和解析href数据 - 因为我认为,其余的工作(加载子页面)。刮刀(假设)抓住丹麦公社的所有网址并打印出来,所以第一行打印应该是:

http://www.albertslund.dk(另外还有97个)

无论如何,这是代码 - 希望有人能告诉我,我做错了什么。先谢谢了。

from BeautifulSoup import BeautifulSoup
from mechanize import Browser

f = open("kommuneadresser.txt", "w")
br = Browser()
url = "https://bdkv2.borger.dk/foa/Sider/default.aspx?fk=22&foaid=11541520"
page = br.open(url)
html = page.read()
soup = BeautifulSoup(html)
link = soup.findAll('a')
kommunelink = link[21:116]

#we create a loop - for every single kommunelink in the list, 
#'something' will happen
for kommune in kommunelink:
    #the link-part is saved as a string
    kommuneurl = kommune['href']
    #we construct a new url from two strings
    fuldurl = "https://bdkv2.borger.dk/" + kommuneurl
    #we open the page and save it in a variable
    kommuneside = br.open(fuldurl)
    #we read the page
    html2 = kommuneside.read()
    #we handle the page in beautifulsoup
    soup2 = BeautifulSoup(html2)
    #we find a specific link on the page
    hjemmesidelink = soup2.findAll('a', attras={'ID':"uscAncHomesite"})
    print hjemmesidelink['href']

2 个答案:

答案 0 :(得分:1)

首先,BeautifulSoup。findAll()返回List

另外,你可能想在soup2中做最后一个findAll。我不确定hjemmesidelink需要哪个项目,所以请尝试使用最后5行代码:

#we handle the page in beautifulsoup
soup2 = BeautifulSoup(html2)
#we find a specific link on the page
hjemmesidelink = soup2.findAll('a', attras={'ID':"uscAncHomesite"})
print hjemmesidelink

你会以这种方式打印第一个项目

print hjemmesidelink[0]

答案 1 :(得分:1)

你试过这个吗?

for link in soup.find_all('a'):
    print(link.get('href'))