xpath草稿

(一)日期和简介
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)

  

原文地址:https://www.cnblogs.com/andy9468/p/9642806.html