2014-10-27 109 views
0

我使用urllib2来拉取网页的html内容。我的计划是遍历页面底部提供的页码(分页)。但是,页面底部的每个页面列表的链接都是通过href标记中的超链接提供的。例如,到每个页码的相应网页的链接是与'#'符号相关联的链接(即,右键点击'#'并在新标签中打开链接导致页面):如何使用urllib2从html中提取超链接的hrefs

 <li class="currentPage">3</li> 



     <li><a class = "_pageNo" href='#'>4</a></li> 



     <li><a class = "_pageNo" href='#'>5</a></li> 



     <li><a class = "_pageNo" href='#'>6</a></li> 

当我拉内容时,'#'被检索为字符而不是它们的基础链接。有什么想法吗?

+0

你是否想从链接中获得'[“4”,“5”,“6”]或者你想关注它们?可能会有一个JavaScript正在执行。 – 2014-10-27 00:12:20

+0

我正在寻找与每个'#'相关的超链接。例如,在查看源代码时,如果右键单击以下行中的'#':

  • 4
  • 并在新选项卡中打开链接,如第4页所示。我试图做的是从href类中的所有'#'访问这个基础超链接。 – 2014-10-27 00:16:10

    +0

    所以,你需要的是获得“4”或“5”或“6”,并将链接与信息,你会发现在页面上。 – 2014-10-27 00:18:15

    回答

    0

    检查你在评论中提到的页面,我发现当你点击一个链接时,POST被发送回服务器,通知下一个要看哪个页面,因此,要获取特定页面,你需要做到这一点:

    from urllib import urlencode 
    import urllib2 
    
    url ='http://online.wsj.com/search/term.html?KEYWORDS=alibaba' 
    data = urlencode({'page_no':3}) 
    
    contents = urllib2.urlopen(url, data=data).read() 
    

    我也建议使用的lib requests这一点,这将简化代码。

    +0

    这是完美的 - 谢谢你! – 2014-10-27 00:44:16