从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进行参考

原文地址:https://www.cnblogs.com/reblue520/p/11150316.html

时间: 2024-07-31 17:37:37

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

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

# coding=utf-8 import requests def download_imgage(): ''' demo: 下载图片 ''' headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"} url = "https:

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

urllib库的使用 # coding=utf-8 import urllib2 import urllib # htpbin模拟的环境 URL_IP="http://10.11.0.215:8080" URL_GET = "http://10.11.0.215:8080/get" def use_simple_urllib2(): response = urllib2.urlopen(URL_IP) print '>>>> Response

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

安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 POST请求:不能使用浏览器直接访问对请求参数的长度没有限制可以用来上传文件等需求 requests常用方法示例 use_requests.py #coding=utf-8 import requests def get_book(): """获取书本的信息""" url = 'http://s

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

此处我们使用github的token进行简单测试验证 # coding=utf-8 import requests BASE_URL = "https://api.github.com" def construct_url(endpoint): return '/'.join([BASE_URL, endpoint]) def basic_auth(): ''' 基本认证 :return: ''' response = requests.get(construct_url('user'

小白学爬虫:PhantomJS实战(五)

摘要:从零开始写爬虫,初学者的速成指南! 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大家如果有什么好的想法请多留言,多提意见,一起来完善我们的爬虫平台.在正式介绍平台之前,先用一些篇幅对基础篇做一点补充. 模拟滚动 这次的目标是爬一个众筹网站的所有项目,项目列表页如下:https://www.kaistart.com/project/more.html.打开后进行分析,页面显示出10个项目: 号:923414804群里有志同道合的

从0开始学架构(二)

此系列文章为极客时间上从0开始学架构学习后感悟总结,虽然隔了一段时间了,那么就再看一遍并且进行感悟升华,排版格式上有问题,后期再复习时也会进行更新   一.    高性能数据库集群:读写分离 读写分离的基本原理是将数据库读写操作分散到不同的节点上. 数据库服务器搭建主从集群,一主一从.一主多从都可以 数据库主机负责读写操作,从机只负责读操作 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据 业务服务器将写操作发给数据库主机,将读操作发给数据库从机 从代码层面与运维层面实

【从0开始学Java】1.面向对象的特征有哪些方面

+Q325957484可以领取学习视频 1.面向对象的特征有哪些方面 1.Java基础培训,从0开始学Java:抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.Java基础培训,从0开始学Java:继承 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为

如何从 0 开始学 ruby on rails (漫步版)

如何从 0 开始学 ruby on rails (漫步版) ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架,简称 rails. 有很多人对  rails 感兴趣,但又不知道从何下手.学习路线是什么,因为在多个场合下回答过类似问题,所以决定整理成文章供大家参观. 有很多人选择直接学习 rails,在学习使用 rails 的过程中学习 ruby.但我觉得这有些本末倒置,我更推崇先学 ruby 再学 rails,在对 ruby 有了一定的了解后再学 rails

如何从 0 开始学 Ruby on Rails

如何从 0 开始学 Ruby on Rails (漫步版)Ruby 是一门编程语言,Ruby on Rails 是 Ruby 的一个 web 框架,简称 Rails. 有很多人对 Rails 感兴趣,但又不知道从何下手.学习路线是什么,因为在多个场合下回答过类似问题,所以决定整理成文章供大家参观. 有很多人选择直接学习 Rails,在学习使用 Rails 的过程中学习 Ruby.但我觉得这有些本末倒置,我更推崇先学 Ruby 再学 Rails,在对 Ruby 有了一定的了解后再学 Rails 有