2016-04-06 11 views
0

Im scraping Webseiten für hrefs Ich habe .lower() verwendet und das ist in Ordnung, aber jetzt, wenn ich neue Seiten hinzufügen, habe ich bemerken, einige haben Groß- und Kleinschreibung in den hrefs.macht meine Rawinput case unempfindlich

Wie kann ich es machen, wenn die Benutzereingabe Übereinstimmungen von Links mit beiden findet.

Beispiel eine Suche nach 'rangers' würde alle Rangers, Rangers, rAnGeRs und so weiter zeigen.

USER_INPUT = raw_input ("Team Suche = ")

headers = { 'User-Agent': 'Mozilla/5.0'} req = urllib2.Request (" http://wizhdsports.com/sports/Football.html", None, headers) bzw. = urllib2.urlopen (REQ)

Suppe = BeautifulSoup (bzw., from_encoding = resp.info(). getParam ('charset'))

links = soup.find_all ('a', href = re.compile (user_input)) wenn len (links) == 0: print "Wizhdsports.com haben keine Streams verfügbar" anderes: für Link in Links: print (Link [ 'href'])

Antwort

0

Da Sie mit regulären Ausdrücken die passen Benutzereingabe können Sie das re.IGNORECASE-Flag zu re.compile verwenden, das eine Übereinstimmung zwischen Groß- und Kleinschreibung durchführt.

ursprünglichen Codebeispiel aktualisiert:

import urllib2 
from bs4 import BeautifulSoup 
import re 

user_input = raw_input ("Search for Team = ") 

headers = { 'User-Agent' : 'Mozilla/5.0' } 
req = urllib2.Request("http://wizhdsports.com/sports/Football.html", None, headers) 
resp = urllib2.urlopen(req) 

# fix UserWarning that parser not explicitly specified with bs4 
soup = BeautifulSoup(resp, "html.parser", from_encoding=resp.info().getparam('charset')) 

links = soup.find_all('a', href=re.compile(user_input, flags=re.IGNORECASE)) 
if len(links) == 0: 
    print "Wizhdsports.com Have No Streams Available" 
else: 
    for link in links: 
     print (link['href']) 
Verwandte Themen