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)
xpath草稿的更多相关文章
- xpath提取多个标签下的text
title: xpath提取多个标签下的text author: 青南 date: 2015-01-17 16:01:07 categories: [Python] tags: [xpath,Pyth ...
- C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)
第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...
- 在Java中使用xpath对xml解析
xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素 ...
- XPath 学习二: 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...
- xpath 学习一: 节点
xpath 中,有七种类型的节点: 元素.属性.文本.命名空间.处理指令.注释.以及根节点 树的根成为文档节点或者根节点. 节点关系: Parent, Children, sibling(同胞), A ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接
使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...
- 关于robotframework,app,appium的xpath定位问题及常用方法
关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法.还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: A,先说说不用xpath的场景,一般是用于存在i ...
- Selenium Xpath Tutorials - Identifying xpath for element with examples to use in selenium
Xpath in selenium is close to must required. XPath is element locator and you need to provide xpath ...
随机推荐
- HDFS的实现机制
参考以上这张图,实际上我们客户端访问HDFS里面的内容时,并不需要真实知道内容存在于服务器的内容的真实路径,我们只需要知道一个虚拟路径就可以,比如最上面的hdfs://weekend110:9000/ ...
- C#读取EXECL关键代码
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extend ...
- Spring的一种拦截器SimpleUrlHandlerMapping
spring的一种拦截器,用于在XML文件中配置以拦截url,它是以map映射的方式进行拦截.映射是从前台urls到具体后台的beans.同时支持到bean实例和bean名称的映射,后者要求非单实例控 ...
- 转载 Python导入模块的几种姿势
作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...
- LPCTSTR —— 摘自百度百科
LPCTSTR用来表示字符是否使用UNICODE. 如果程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 类型理解:L,表示 ...
- Android 扩展OkHttp支持请求优先级调度
在当今这个App泛滥的时代,网络请求差点儿是每个App不可缺少的一部分.请求差点儿遍布App的每个界面中.我们进入A界面后.App发起了一系列请求,这时候假如另一部分请求没有被运行,我们就进入B界面開 ...
- 360破解大赛crackme分析--之3DES解密附加数据
具体的分析这里有.本人仅仅是对这里面有趣的算法进行了一些学习 分析链接 这次是逆向的使用3DES解密的过程中的内容: 使用微软的crypt库 使用3DES解密程序中的附加数据 代码: VOID enc ...
- hdu 1147:Pick-up sticks(基本题,判断两线段相交)
Pick-up sticks Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 用原生Canvas写贪吃蛇及问题解决
为了学习Canvas,写了这个小游戏贪吃蛇供自己和大家学习 Github: https://github.com/zhiyishou/Gsnake Play On: http://zhiyishou. ...
- 程序阅读:简单C++学生信息管理系统
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [程序阅读]阅读并执行以下的程序,找出当中出现 ...