2013-05-04 24 views
3

我正在编写一个工具,需要在网页上的div内收集所有网址,但在该div之外没有网址。简化的页面,它看起来是这样的:使用lxml查找div内的所有链接

<div id="bar"> 
    <a link I dont want> 
    <div id="foo"> 
     <lots of html> 
     <h1 class="baz"> 
     <a href=”link I want”> 
     </h1> 
     <h1 class="caz"> 
     <a href=“link I want”> 
     </h1> 
    </div> 
</div> 

当选择使用Firebug div和选择的XPath我得到:// * [@ ID = “富”。到现在为止还挺好。不过,我坚持试图找到div foo内的所有url。请帮助我找到一种方法来提取元素中由href定义的url。

示例代码类似于我正在使用W3Schools的上:

import mechanize 
import lxml.html 
import cookielib 

br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 
br.addheaders = [('User-agent', 'WatcherBot')] 

r = br.open('http://w3schools.com/') 
html = br.response().read() 
root = lxml.html.fromstring(html) 

hrefs = root.xpath('//*[@id="leftcolumn"]') 

# Found no solution yet. Stuck 

谢谢您的时间!

回答

9

你可能想这样的:

hrefs = root.xpath('//div[@id="foo"]//a/@href') 

这会给你所有href值的列表,从内<div id="foo">a标签在任何级别

+0

真棒感谢。 – Teletha 2013-05-04 22:00:55

相关问题