2015-11-19 5 views
1

Я создал программу быстрого python, которая возвращает заголовок для конечного адресата URL-адреса.Python Follow Window.Location Redirect

def get_title(url): 
    try: 
     req = urllib2.Request(url) 
     soup = BeautifulSoup(urllib2.urlopen(req)) 
     return soup.title.string.encode('ascii', 'ignore').strip().replace('\n','') 
    except: 
     print('Generic Exception for ' + url + ', ' + traceback.format_exc()) 

Этот код работает отлично, но один из URL-адресов имеет редирект, что делается с помощью window.location и из-за этого мой сценарий не может следовать по этому пути. Есть ли простой способ заставить его следовать window.location перенаправлениям?

+1

перебрать сценариев, найти текст 'window.location =«...»' используя правильное регулярное выражение, перейдите согласованная строка. – kay

ответ

1

Я закончил с использованием регулярных выражений, чтобы соответствовать для window.location и извлечения URL

def get_title(url): 
    try: 
     req = urllib2.Request(url) 
     soup = BeautifulSoup(urllib2.urlopen(req)) 
     redirMatch = re.match(r'.*?window\.location\s*=\s*\"([^"]+)\"', str(soup), re.M|re.S) 
     if(redirMatch and "http" in redirMatch.group(1)): 
      url = redirMatch.group(1) 
      return get_title(url) 
     else: 
      return soup.title.string.encode('ascii', 'ignore').strip().replace('\n','')