Hi,
The below code is doing the following
1. Reading the branch name and the destination from a txt file
2. Parsing thru HTML pages

Basically, i want to deploy the build of the branch (supplied thru txt file) on a test environment (supplied thru txt file)
The branch_dest file looks like this
Branch: ltm_7.4
Destination: Test 5

URL = "http://11.12.13.27:8080/cruisecontrol"

from urllib2 import urlopen
from HTMLParser import HTMLParser

import re

# Fetching links using HTMLParser
def get_links(url):
    parser = MyHTMLParser()
    parser.feed(urlopen(url).read())
    parser.close()
    return parser.links

# Build url for Deploy page
def get_deploy_url():
    lines = [x.split(None, 1) for x in open("branch_dest.txt")]
    print lines
    branch = "%s" % lines[0][1].strip(': ')
    print branch
    destination = "%s" % lines[1][1].strip(': ')
    print destination
    url = URL + "/buildresults/Poker-TTM_%s_nightly_build" % branch
    print url
    for link in get_links(url):
        print "hello1"
        if link["href"].startswith("Deploy"):
            return "%s/%s" % (URL, link["href"])
        print link["href"]

# Build url for Destination page
def get_destination_url():
    url = get_deploy_url()
    print url
    print destination
    destination_re = re.compile(r"%s") % destination
    for link in get_links(url):
        if destination_re.search(link["href"]):
            return "http://11.12.13.27:8080/cruisecontrol/" + link["href"]

# Deploying the build
#def deploy(url):
    

# Parsing HTML pages 
class MyHTMLParser(HTMLParser):
    def __init__(self, *args, **kwd):
        HTMLParser.__init__(self, *args, **kwd)
        self.links = []

    def handle_starttag(self, tag, attrs):
        if tag == "a":
            attrs = dict(attrs)
            if "href" in attrs:
                self.links.append(dict(attrs))

    def handle_endtag(self, tag):
        pass

if __name__ == "__main__":
    final_url = get_destination_url()
    if final_url is None:
        print "Could not find a destination to deploy"
    else:
        print final_url
        #deploy(final_url)

I am getting the below error

Traceback (most recent call last):
  File "C:\deploy_input.py", line 71, in <module>
    final_url = get_destination_url()
  File "C:\deploy_input.py", line 35, in get_destination_url
    url = get_deploy_url()
  File "C:\deploy_input.py", line 27, in get_deploy_url
    for link in get_links(url):
  File "C:\deploy_input.py", line 13, in get_links
    parser.feed(urlopen(url).read())
  File "C:\Python26\lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python26\lib\urllib2.py", line 389, in open
    req = meth(req)
  File "C:\Python26\lib\urllib2.py", line 1067, in do_request_
    raise URLError('no host given')
URLError: <urlopen error no host given>

Recommended Answers

All 3 Replies

Change
branch = "%s" % lines[0][1].strip(': ')
to
branch = "%s" % lines[0][1].strip()
to get rid of the newline character

I think you want to join() everything after the first sub-string if destination does indeed contain spaces, or simply split on the colon if you know that there is never more than one in the file.

for x in ["Branch: ltm_7.4\n", "Destination: Test 5\n"]:
    x = x.strip()
    substrs = x.split()
    ## Note that join() concatenates the remaining strings
    print substrs[0], "----->", " ".join(substrs[1:])

Hey,

That did help me solve the error. Thanks both!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.