2012-06-16 6 views
5

Ho un file html come segue: "?/2.811.457/Follow page = 2 & gsid = 3_5bce9b871484d3af90c89f37"BeautifulSoup non riesce a trovare href nel file utilizzando espressioni regolari

<form action="/2811457/follow?gsid=3_5bce9b871484d3af90c89f37" method="post"> 
<div> 
<a href="/2811457/follow?page=2&amp;gsid=3_5bce9b871484d3af90c89f37">next_page</a> 
&nbsp;<input name="mp" type="hidden" value="3" /> 
<input type="text" name="page" size="2" style='-wap-input-format: "*N"' /> 
<input type="submit" value="jump" />&nbsp;1/3 
</div> 
</form> 

come estrarre il href" in next_page?

si tratta di una parte di html, ho intenzione di mettere in chiaro. Quando uso BeautifulSoup,

print soup.find('a',href=re.compile('follow?page')) 

è tornare Nessuno, perché? Sono nuovo di BeautifulSoup, e ho guardato il documento, ma ancora confuso.

Ora uso un modo brutto:

urls = soup.findAll('a',href=True)) 
    for url in urls: 
     if follow?page in url: 
      print url 

Ho bisogno di un modo più chiaro ed elegante.

risposta

14

È necessario uscire dal punto interrogativo. L'espressione regolare w? significa zero or one w. Prova questo:

print soup.find('a', href = re.compile(r'.*follow\?page.*')) 
+0

mark, mi dirai come estrarre "1/3" dal file html? – young001