(一)日期和简介 date:2017/12/18 name:a标签href属性提取抛出异常list index out of range (二)问题详细说明: 以百度新闻页面为例: 1.node_list = html_etree.xpath("//a") # 获得a标签节点198个 2.遍历节点,获取href属性:a_href = node.xpath("./@href")[0]时 到173后面的href属性提取异常。 后发现:174标签为:<a id="change-city" class="select-btn">切换城市</a> 没有href属性。 (三)解决方案 1.推荐方法:浏览器中查找报错标签:html页面内,根据第172标签,查找第174标签。 2.风险点:a标签可能的情况: (1)没有href属性 (2)有href属性 1)href='' 2)href='#' 3)href='#top' 4)href='javascript:void(0)' 5)href='/' 6)href='./' 7)href='/society' 8)href='http://XXX....' 9)href='https://XXX....' 10)href='mailto:root@freebuf.com' 提取href时,前面4种没有意义,后面的有意义。 风险1:requests的get方法提取a标签,只能提取静态html中的,如果有js动态加载的a标签,不会被提取到。(如果有需要,考虑用selenium) 风险2:href中的有效链接,域名之外的不需要,会妨碍对站点的全站抓取。(考虑用正则匹配,筛选出指定域名下的url)