A tiny recursive crawler
First of all, you don't need to make your solution recursive. Iterative approach in your case would be more intuitive and simple.
Moreover, there is a better way to handle pagination for this particular website - the paginated parts of the video catalog are following http://www.wiseowl.co.uk/videos/default-&lt;number&gt;.htm pattern, which means that you can start with number=1 up until you get 404 which would conclude the catalog:
import requests
from lxml import html


URL_PATTERN = &quot;http://www.wiseowl.co.uk/videos/default-{}.htm&quot;

with requests.Session() as session:
    page_number = 1
    while True:
        response = session.get(URL_PATTERN.format(page_number))
        if response.status_code == 404:  # break once the page is not found
            break

        print(&quot;Processing page number {}..&quot;.format(page_number))

        tree = html.fromstring(response.text)
        for video_link in tree.xpath('//p[@class=&quot;woVideoListDefaultSeriesTitle&quot;]//a'):
            title = video_link.text
            link = video_link.attrib['href']

            print(title, link)

        page_number += 1

Notes about some of the improvements I've made:

re-using the same Session instance - it results into a memory usage and performance improvement because it re-uses the same TCP connection:

if you're making several requests to the same host, the underlying TCP connection will be reused, which can result in a significant performance increase (see HTTP persistent connection).


instead of searching the entire tree for the &quot;video&quot; elements 2 times, looping over video link elements directly once

naming: first of all, make sure to follow the lower_case_with_underscores Python naming recommendations. And, try to avoid meaningless variables like i and j if not used as throwaway loop variables; url1 was not a good variable choice as well

follow other PEP8 style guide recommendations - in particular, watch for the spaces around operators and newlines