因此,我制作了一个 python 蜘蛛,它从给定站点获取所有链接,然后打印出包含'impressum'
自身的链接。现在我想创建一个elif
函数,如果在链接中找不到该链接,则打印出包含'kontakt'
在 istelf'impressum'
中的链接。我现在的代码如下所示:
import urllib
import re
import mechanize
from bs4 import BeautifulSoup
import urlparse
import cookielib
from urlparse import urlsplit
from publicsuffix import PublicSuffixList
url = "http://www.zahnarztpraxis-uwe-krause.de"
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.set_handle_redirect(True)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
page = br.open(url, timeout=5)
htmlcontent = page.read()
soup = BeautifulSoup(htmlcontent)
newurlArray = []
for link in br.links(text_regex=re.compile('^((?!IMG).)*$')):
newurl = urlparse.urljoin(link.base_url, link.url)
if newurl not in newurlArray:
newurlArray.append(newurl)
#print newurl
if 'impressum' in newurl:
print newurl
elif 'impressum' not in newurl and 'kontakt' in newurl:
print newurl
尽管有这个if
elif
循环,我总是在控制台中获得两个链接:
http://www.zahnarztpraxis-uwe-krause.de/pages/kontakt.html
http://www.zahnarztpraxis-uwe-krause.de/pages/impressum.html
但在真实情况下,只有在没有找到 'impressum' 的情况下,我才需要使用 'kontakt'。
我究竟做错了什么?