Python HTML analiza con sopa hermosa y filtra las palabras de parada

Estoy analizando información específica de un sitio web en un archivo. Ahora mismo, el progtwig que tengo mira una página web, encuentra la etiqueta HTML correcta y analiza el contenido correcto. Ahora quiero filtrar aún más estos “resultados”.

Por ejemplo, en el sitio: http://allrecipes.com/Recipe/Slow-Cooker-Pork-Chops-II/Detail.aspx

Estoy analizando los ingredientes que se encuentran en la etiqueta

. Este analizador hace el trabajo muy bien, pero quiero seguir procesando estos resultados.

Cuando ejecuto este analizador, elimina números, símbolos, comas y barras (\ o /) pero deja todo el texto. Cuando lo ejecuto en el sitio web obtengo resultados como:

cup olive oil cup chicken broth cloves garlic minced tablespoon paprika 

Ahora quiero seguir procesando esto eliminando las palabras de parada como “taza”, “clavos”, “picado”, “tableoon” entre otros. ¿Cómo exactamente hago esto? Este código está escrito en python y no soy muy bueno en eso, y solo estoy usando este analizador para obtener información que puedo ingresar manualmente pero preferiría no hacerlo.

Cualquier ayuda sobre cómo hacer esto en detalle sería apreciada! Mi código está abajo: ¿cómo haría esto?

Código:

 import urllib2 import BeautifulSoup def main(): url = "http://allrecipes.com/Recipe/Slow-Cooker-Pork-Chops-II/Detail.aspx" data = urllib2.urlopen(url).read() bs = BeautifulSoup.BeautifulSoup(data) ingreds = bs.find('div', {'class': 'ingredients'}) ingreds = [s.getText().strip('123456789.,/\ ') for s in ingreds.findAll('li')] fname = 'PorkRecipe.txt' with open(fname, 'w') as outf: outf.write('\n'.join(ingreds)) if __name__=="__main__": main() 

 import urllib2 import BeautifulSoup import string badwords = set([ 'cup','cups', 'clove','cloves', 'tsp','teaspoon','teaspoons', 'tbsp','tablespoon','tablespoons', 'minced' ]) def cleanIngred(s): # remove leading and trailing whitespace s = s.strip() # remove numbers and punctuation in the string s = s.strip(string.digits + string.punctuation) # remove unwanted words return ' '.join(word for word in s.split() if not word in badwords) def main(): url = "http://allrecipes.com/Recipe/Slow-Cooker-Pork-Chops-II/Detail.aspx" data = urllib2.urlopen(url).read() bs = BeautifulSoup.BeautifulSoup(data) ingreds = bs.find('div', {'class': 'ingredients'}) ingreds = [cleanIngred(s.getText()) for s in ingreds.findAll('li')] fname = 'PorkRecipe.txt' with open(fname, 'w') as outf: outf.write('\n'.join(ingreds)) if __name__=="__main__": main() 

resultados en

 olive oil chicken broth garlic, paprika garlic powder poultry seasoning dried oregano dried basil thick cut boneless pork chops salt and pepper to taste 

? No sé por qué ha dejado la coma en ella: s.strip (string.punctuation) debería haberse ocupado de eso.