2016-05-17 5 views
1

Ich versuche, URLs von einer Webseite mit dem folgenden Muster zu extrahieren:Wie extrahieren URLs mit einem Muster übereinstimmen

http://www.realclearpolitics.com/epolls/????/governor/??/- .html‘

Meine aktuellen Code extrahiert alle die Links. Wie kann ich meinen Code so ändern, dass nur URLs extrahiert werden, die dem Muster entsprechen? Vielen Dank!

import requests 
from bs4 import BeautifulSoup 

def find_governor_races(html): 
    url = html 
    base_url = 'http://www.realclearpolitics.com/' 
    page = requests.get(html).text 
    soup = BeautifulSoup(page,'html.parser') 
    links = [] 
    for a in soup.findAll('a', href=True): 
      links.append(a['href']) 
find_governor_races('http://www.realclearpolitics.com/epolls/2010/governor/2010_elections_governor_map.html') 

Antwort

1

Sie können für die .find_all() ein regular expression pattern als href Argumentwert bieten:

import re 

pattern = re.compile(r"http://www.realclearpolitics.com\/epolls/\d+/governor/.*?/.*?.html") 
links = soup.find_all("a", href=pattern) 
+0

danke so sehr. das hat wirklich geholfen – user6283465