【问题标题】:How to extract hyperlinked hrefs from html using urllib2如何使用 urllib2 从 html 中提取超链接的 href
【发布时间】:2014-10-27 08:38:40
【问题描述】:

我正在使用 urllib2 来提取网页的 html 内容。我的计划是遍历页面底部提供的页码(分页)。但是,页面底部的每个页面列表的链接由 href 标记中的超链接提供。例如,每个页码对应网页的链接是与“#”符号相关联的链接(即右键单击“#”并在新选项卡中打开链接会指向该页面):

        <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>

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

【问题讨论】:

  • 您是要从链接中获取["4", "5", "6"] 还是要关注它们?可能正在执行一个 javascript。
  • 我正在寻找与每个“#”相关联的超链接。例如,查看源代码时,如果我右键单击以下行中的“#”:
  • 4
  • 并在一个新标签,它是第四页,如图所示。我想做的是从 href 类中的所有“#”访问这个底层超链接。
  • 因此,您需要获取“4”或“5”或“6”,并使用您将在页面上找到的信息创建链接。
  • 如果 URL 是页码(4、5、6 等)的函数,那么这就足够了。然而,这些页面的 url 是静态的——因此,需要一种方法来点击这些超链接的 href。
  • 你能分享你所指的页面吗?
  • 标签: python pagination web-scraping urllib2


    【解决方案1】:

    检查你在 cmets 中提到的页面,我发现当你点击一个链接时,一个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,这将简化代码。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签