1.知道本节点元素,如何定位到兄弟元素

详情见博客

XML代码见下

bt1在文档中只出现一次,所以很容易获取到bt1中内容,那怎么根据<td class='bt1'>来获取bt2中的内容

                content_title = driver.find_element_by_xpath("//td[@class='bt1']").text
# 获取content_title的父节点的哥哥节点
content_subtitle = driver.find_element_by_xpath("//td[@class='bt1']/../following-sibling::tr[1]").text
# 获取第二个tr下面td的父节点的弟弟节点
conten_subtitle = driver.find_element_by_xpath("//td[@class='bt1']/../preceding-sibling::tr[1]").text

 返回的内容为:高起点高水平推进福州新区建设

尤权于伟国赴福州新区调研

‘’

2.元素替换,查找元素位置可以用变量替换字符串

>>> driver.find_element_by_xpath("//*[@id='mp1057136']").click()
>>> a='mp1057136'
>>> driver.find_element_by_xpath("//*[@id='%s']"% a).click()
>>>

3.用webdriver获取网页上影藏的文字

网页格式和源码如下所示,网页上的内容被隐藏了,需要点击一下才会完全显示。右边是没有点击前页面的源码,可以看到完整的内容其实已经在页面上了,于是我通过下面方式获取

>>> driver.find_element_by_xpath(".//*[@id='company_base_info_detail']").text
''
>>> driver.find_element_by_xpath("//script[@id='company_base_info_detail']").text
''

  通过定位获取到的竟然为空,并不想通过模拟点击生成新页面再来获取内容,看到网上博主有提到另一种获取隐藏信息的方式

driver.execute_script("return arguments[0].textContent",c)获取文字或者
driver.execute_script("return arguments[0].innerHTML",c)获取源码
>>> c=driver.find_element_by_xpath("//div[@class='sec-c2 over-hide']")
>>> driver.execute_script("return arguments[0].textContent",c)
'简介:淘宝(中国)软件有限公司成立于2004年12月07日,主要经营范围为研究、开发计算机软、硬...\n 淘宝(中国)软件有限公司成立于2004年12月07日,主要经营范围为研究、开发计算机软、硬件,网络技术产品,多媒体产品等。\n 详情'
>>> driver.execute_script("return arguments[0].innerHTML",c)
'<span><span class="sec-c3">简介:</span>淘宝(中国)软件有限公司成立于2004年12月07日,主要经营范围为研究、开发计算机软、硬...</span><script type="text/html" id="company_base_info_detail">\n 淘宝(中国)软件有限公司成立于2004年12月07日,主要经营范围为研究、开发计算机软、硬件,网络技术产品,多媒体产品等。\n </script><span class="c9 point hover_underline" onclick="companyDetail()">详情</span>'
>>> c=driver.find_element_by_xpath("//div[@class='sec-c2 over-hide']//script")
>>> driver.execute_script("return arguments[0].textContent",c)
'\n 淘宝(中国)软件有限公司成立于2004年12月07日,主要经营范围为研究、开发计算机软、硬件,网络技术产品,多媒体产品等。\n '
>>>

  后面我重新定义了c使得最终得到我想要的企业完整简介

3.查找所有id都包含相同字符串的元素

tables = driver.find_elements_by_xpath("//div[contains(@id,'_container_')]")

4、查找标签

tag = driver.find_elements_by_xpath("//div[@class='search_right_item']")
tag[0].find_element_by_tag_name('a').click()
base = driver.find_element_by_xpath("//div[@class='company_header_width ie9Style']/div")

查找div标签中class属性等于’company_header_width ie9Style‘的子div

python爬虫----XPath的更多相关文章

  1. python爬虫xpath的语法

    有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ...

  2. python爬虫xpath

    又是一个大晴天,因为马上要召开十九大,北京地铁就额外的拥挤,人贴人到爆炸,还好我常年挤地铁早已练成了轻功水上漂,挤地铁早已经不在话下. 励志成为一名高级测试工程师的我,目前还只是个菜鸟,难得有机会,公 ...

  3. Python爬虫 XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  4. Python爬虫 | xpath的安装

    错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...

  5. python爬虫前提技术

    1.BeautifulSoup 解析html如何使用 转自:http://blog.csdn.net/u013372487/article/details/51734047 #!/usr/bin/py ...

  6. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  7. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  8. Python爬虫教程-22-lxml-etree和xpath配合使用

    Python爬虫教程-22-lxml-etree和xpath配合使用 lxml:python 的HTML/XML的解析器 官网文档:https://lxml.de/ 使用前,需要安装安 lxml 包 ...

  9. 小白学 Python 爬虫(19):Xpath 基操

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

随机推荐

  1. 假期训练八(poj-2965递归+枚举,hdu-2149,poj-2368巴什博奕)

    题目一(poj-2965):传送门 思路:递归+枚举,遍历每一种情况,然后找出最小步骤的结果,与poj-1753类似. #include<iostream> #include<cst ...

  2. Java数据类型的转换

    Java数据类型,从小到大排序 byte ,short ,int ,long ,float, double,char 1.小数据类型转换大的数据类型,自动转换 int a = 3; double b ...

  3. (12)We should aim for perfection — and stop fearing failure

    https://www.ted.com/talks/jon_bowers_we_should_aim_for_perfection_and_stop_fearing_failure/transcrip ...

  4. c#中委托与事件

    参考:http://www.tracefact.net/tech/009.html 张子阳:http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/9 ...

  5. matchesSelector()方法

    let result = element.matches(selectorString); result 的值为 true 或 false. selectorString 是个css选择器字符串. i ...

  6. MongoDB-环境搭建

    1.下载并安装MongoDB服务 下载地址:mongodb-win32-x86_64-2008plus-ssl-3.2.8-signed 可直接运行mongod命令启动MongoDB服务器,也可以将M ...

  7. C#——字符串

    aaarticlea/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAA8CAMAAAA6wCQxAAAAGFBMVEX////w9f5kb9TGyu3b6P6hp

  8. 简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?

    http://blog.csdn.net/zuoerjin/article/details/7858488http://blog.sina.com.cn/s/blog_bf9843bf0101j5px ...

  9. Visualise the Argyris basis functions

    """ Author: kinnala Visualise the Argyris basis functions. """ from sk ...

  10. linux查看RAID信息

    linux查看RAID信息 发表于2013 年 12 月 22 日 RAID分为软RAID和硬RAID 软RAID查看 cat /proc/mdstat 硬RAID查看 在启动画面进raid卡查看 I ...