J'ai une URL que je veux analyser une partie, en particulier le widgetid:Comment exécuter une valeur d'attribut à travers une expression régulière après l'extraction via BeautifulSoup?
<a href="http://www.somesite.com/process.asp?widgetid=4530">Widgets Rock!</a>
Je l'ai écrit Python (je suis un peu d'un débutant à Python - version 2.7):
import re
from bs4 import BeautifulSoup
doc = open('c:\Python27\some_xml_file.txt')
soup = BeautifulSoup(doc)
links = soup.findAll('a')
# debugging statements
print type(links[7])
# output: <class 'bs4.element.Tag'>
print links[7]
# output: <a href="http://www.somesite.com/process.asp?widgetid=4530">Widgets Rock!</a>
theURL = links[7].attrs['href']
print theURL
# output: http://www.somesite.com/process.asp?widgetid=4530
print type(theURL)
# output: <type 'unicode'>
is_widget_url = re.compile('[0-9]')
print is_widget_url.match(theURL)
# output: None (I know this isn't the correct regex but I'd think it
# would match if there's any number in there!)
Je pense que je manque quelque chose avec l'expression régulière (ou ma compréhension de la façon de les utiliser) mais je ne peux pas le comprendre.
Merci pour votre aide!
La raison 'urlparse' qui est suggéré est qu'il a déjà la logique de l'analyse syntaxique chaîne de requête élaborée - Par exemple, si vous obtenez une URL avec plus de paramètres, cela fonctionnera toujours. – katrielalex