1 xpath使用
(1)属性筛选
//input[@id=”kw”]
//span[@class=”bg s_ipt_wr quickdelete-wrap”]
通过class进行选择的时候,需要将所有的class全部写进来才可以
(2)索引和层级
//div[@id=”head”]/div/div[@id=”u1”]/a[2]
(3)获取内容和属性
//div[@id=”u1”]/a[2]/text() 获取内容
//div[@id=”u1”]/a[2]/@href 获取属性
(4)xpath函数
选出class属性以mn开头的a
//div[@id=”u1”]/a[starts-with(@class,”mn”)]
选出内容以地开头的a
//div[@id=”u1”]/a[starts-with(text(),”地”)]
选出class属性包含av的a
//div[@id=”u1”]/a[contains(@class,”av”)]
选出内容包含多产的a
//div[@id=”u1”]/a[contains(text(),”多产”)]
代码中使用xpath,首先将文档生成对象,然后根据对象的方法找到想要的节点。可以是本地文件,也可以是网络文件
xpath方法返回的是一个列表,通过下标进行取内容
//[@id=”u1”]/a[2]
//[@id=”su”] #su #form > input[type=”hidden”]:nth-child(14)
2 xpath案例
sc.chinaz.com 美女图片
懒加载:一个网页中有100个图片。需要101次请求才能加载完毕。首先加载出现在可视区内的图片,在可视区外的图片多没有加载。在用户滚动滚动条的时候,通过js动态的去监听当前这个图片有没有出现在可视区,如果出现在可视区,再去加载这个图片
前端如何实现?
当图片出现在可视区的时候,js动态的将src2修改为src,就会加载这个图片
出现的形式:
src2 data-src data-original class=”lazy”
糗事百科
谷歌中的xpath只能作为参考,实际都要以代码为准
3 json数据解析
认识json?
前台 :由用户看到的界面称之为前台
后台 :管理员负责的查看的,后台管理系统
前端 :html、css、js,在浏览器那一块工作的
后端 :服务器端的,php、java、python
短信发送平台。会提供单独的接口
天气接口。
前端后端交互一般都是json格式。
后端服务器和特定功能服务器之间的交互,后端服务器称之为前端,提供服务的称之为后端,之间交互的格式也是json格式
<note>你长得真漂亮</note>
'note': '你长得真漂亮'
json语法:
(1)数据都在键值对中
(2)数据以逗号隔开
(3){}保存对象 对应的是咱的字典
(4)[]保存数组
字符串都是以双引号括起来
json的值可以是:数字、字符串、逻辑值、数组、字典、null
Python如何解析json?
(1)原生解析,通过字典、列表解析
import json
json.dumps() : 将python的字典或者列表转化为json格式字符串
ensure_ascii = False 可以看懂中文
json.loads() : 将json格式的字符串转化为Python的对象
了解下面的
json.dump() : 将python对象转化为json字符串之后直接写入到文件中
json.load() : 将文件中的json字符串直接读到python对象中
(2)jsonpath(了解)
jsonpath用来干什么?用来解析json数据,当解析复杂一点的json数据就要用到这个。
obj[0]['lala']['goudan'][2]['dudu']['xixi']
http://blog.csdn.net/luxideyao/article/details/77802389
安装:pip install lxml pip install jsonpath
和xpath对比
/ $ 根元素
/ . 路径分隔符,直接子元素
. @ 当前元素
// .. 任意位置开始查找
下标xpath从1开始,jsonpath从0开始