从0开始学爬虫3之xpath的介绍和使用

Xpath:一种HTML和XML的查询语言,它能在XML和HTML的树状结构中寻找节点

安装xpath:

pip install lxml

HTML

超文本标记语言(HyperText Mark-up Language),是一种规范,一种标准,是构成网页文档的主要语言

URL

统一资源定位器(Uniform Resource Locator),互联网上的每个文件都有一个唯一的URL,它包含的信息之处文件的位置以及浏览器应该怎么处理它

Xpath的使用语法:

获取文本:

//标签1[@属性1=”属性值1”]/标签2[@属性2=”属性值2”]/…/text()

获取属性值

//标签1[@属性1=”属性值1”]/标签2[@属性2=”属性值2”]/…/@属性n

使用pycharm虚拟环境安装xpath模块

Xpath使用示例

用来进行xpath测试的网页 static/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>网页测试</title>
<link rel="stylesheet" href="">
</head>
<body>
<h3>标题</h3>
<ul>
<li>内容1</li>
<li>内容2</li>
<li class="important">内容3important</li>
<li>内容4</li>
<li>内容5</li> </ul>
<div>
内容未知
</div>
<p>
段落内容 from p
</p>
<div id="container">
段落文字
<a href="http://www.baidu.com" title="超链接">跳转到百度首页</a>
<p class="content">
区块内容1
</p>
<p class="content">
区块内容2
</p>
<p class="content">
区块内容3
</p>
<p class="content">
区块内容4
</p>
<p class="content-block">
区块内容5 from block
</p>
<p class="content-block">
区块内容6 末尾内容
</p>
<a href="http://www.so.com" title="超链接">跳转到360搜索首页</a>
</div>
<p>
最后一段文字
</p>
</body>
</html>

xpath使用示例

#coding=utf-8
from lxml import html def parse():
"""将html文件中的内容,使用xpath进行提取"""
# 读取文件中的内容
f = open('./static/index.html', 'r', encoding='utf-8')
s = f.read() selector = html.fromstring(s)
# 解析H3标题
h3 = selector.xpath('/html/body/h3/text()')
print(h3[0])
# 解析ul下面的内容
# ul = selector.xpath('/html/body/ul/li')
# 双斜线语法
ul = selector.xpath("//ul/li")
print(len(ul))
for li in ul:
print(li.xpath('text()')[0]) # 解析ul指定的元素值
ul2 = selector.xpath('/html/body/ul/li[@class="important"]/text()')
print(ul2) # 解析a标签的内容,拆分的方式
# a = selector.xpath('//div[@id="container"]/a')
# 标签内的内容
# print(a[0].xpath("text()")[0])
# 得到标签的属性
# print(a[0].xpath("@href")[0])
# div[id="container"] 的第二个a标签内容
# print(a[1].xpath("text()"))
# print(a[1].xpath("@href")[0]) # 解析a标签的内容,一次性解析的方式
a1 = selector.xpath('//div[@id="container"]/a/text()')
# 标签内容
print(a1[0])
# 标签数学
alink = selector.xpath('//div[@id="container"]/a/@href')
print(alink[0]) # 解析p标签
p = selector.xpath('/html/body/p[last()]/text()')
print(p[0])
f.close() if __name__ == "__main__":
parse()

当我们在页面中找不到xpath的时候可以使用chrome的copy xpath进行参考

从0开始学爬虫3之xpath的介绍和使用的更多相关文章

  1. 从0开始学爬虫2之json的介绍和使用

    从0开始学爬虫2之json的介绍和使用 Json 一种轻量级的数据交换格式,通用,跨平台 键值对的集合,值的有序列表 类似于python中的dict Json中的键值如果是字符串一定要用双引号 jso ...

  2. 从0开始学爬虫12之使用requests库基本认证

    从0开始学爬虫12之使用requests库基本认证 此处我们使用github的token进行简单测试验证 # coding=utf-8 import requests BASE_URL = " ...

  3. 从0开始学爬虫11之使用requests库下载图片

    从0开始学爬虫11之使用requests库下载图片 # coding=utf-8 import requests def download_imgage(): ''' demo: 下载图片 ''' h ...

  4. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  5. 从0开始学爬虫8使用requests/pymysql和beautifulsoup4爬取维基百科词条链接并存入数据库

    从0开始学爬虫8使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库 Python使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库 参考 ...

  6. 从0开始学爬虫4之requests基础知识

    从0开始学爬虫4之requests基础知识 安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 P ...

  7. 从0开始学爬虫10之urllib和requests库与github/api的交互

    urllib库的使用 # coding=utf-8 import urllib2 import urllib # htpbin模拟的环境 URL_IP="http://10.11.0.215 ...

  8. 从0开始学爬虫7之BeautifulSoup模块的简单介绍

    参考文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ # 安装 beautifulsoup4 (pytools) D:\pyt ...

  9. 一起学爬虫——使用selenium和pyquery爬取京东商品列表

    layout: article title: 一起学爬虫--使用selenium和pyquery爬取京东商品列表 mathjax: true --- 今天一起学起使用selenium和pyquery爬 ...

随机推荐

  1. 使用BERT预训练模型+微调进行文本分类

    本文记录使用BERT预训练模型,修改最顶层softmax层,微调几个epoch,进行文本分类任务. BERT源码 首先BERT源码来自谷歌官方tensorflow版:https://github.co ...

  2. C++中与类有关的注意事项(更新中~~~)

    关于构造函数的调用次序,见下列代码 #include<iostream> using namespace std; class A { private: int x; public: A( ...

  3. linux系统编程之管道(二)

    今天继续研究管道,话不多说,言归正传: 对于管道,有一定的读写规则,所以这里主要是对它的规则进行探讨,具体规则如下: 规则一: 下面用程序来验证下,还是用上节学的子进程写数据,父进程读取数据的例子,只 ...

  4. 【Vue-01】基础Vue语法+JS复习

    Vue学习疑问及总结_SZS 0.vue router 带参数跳转 发送:this.$router.push({path:'/news',query:{id:row.id}}) 接收:var id=t ...

  5. Python正则提取数据单引号内数据,并判断是否是空列表(是否提取到数据)

    #coding=utf- import re string1="asdfgh'355'dfsfas" string2="fafafasfasdfasdf" pa ...

  6. postgresql —— 表的继承

    示例: CREATE TABLE cities ( --父表 name text, population float, altitude int ); CREATE TABLE capitals ( ...

  7. vscode——配置go插件

    前言 这个真的折腾死我了,看了N多博客才弄好 这两个还是比较有用的~ https://www.cnblogs.com/nickchou/p/9038114.html https://www.jians ...

  8. Ubuntu安装Apache 2.4.7常见问题解答

    环境:Apache 2.4.7 on Ubuntu 14.04 启动apache服务报错:Unknown Authz provider: ip 进入mod模块目录 cd /etc/apache2/mo ...

  9. 2019ICPC南京网络赛B super_log——扩展欧拉定理

    题目 设函数 $$log_a*(x) = \begin{cases}-1, & \text{ if } x < 1 \\ 1+log_a*(log_ax) & \text{ if ...

  10. 自用 微信小程序跳小程序

    "window": { "navigationBarTextStyle": "black", "navigationBarTitl ...