Python爬虫数据提取方式——使用xpath提取页面数据

news/2024/7/19 11:29:20 标签: xpath, 爬虫, 数据提取

xpath:跟re,bs4,pyquery一样,都是页面数据提取方法。

                xpath是根据元素的路径来查找页面元素

安装lxml包:pip install lxml

HTML实例:

html = """
    <div id='content'>
        <ul class='list'>
            <li class='one'>One</li>
            <li class='two'>Two</li>
            <li class='three'>Three</li>
            <li class='four four1 four2 four3'>Four</li>
            <div id='inner'>
                <a href='http://www.baidu.com'>百度一下</a>
                <p>第一段</p>
                <p>第2段</p>
                <p>第3段</p>
                <p>
                    第4段
                    <span>法大师傅大师傅</span>
                </p>
                <p>第5段</p>
                <p>第6段</p>
            </div>
        </ul>
    </div>
"""

将一个Html文件解析成为对象:

首先导入:

# element tree: 文档树对象
from lxml.html import etree

将HTML解析成为对象:

#方式一:使用较多
obj= etree.HTML("index.html")

#方式二:
obj = etree.parse('index.html')

print(type(obj))

开始查找元素或数据:

注意:

1、 //ul: 从obj中查找ul,不考虑ul所在的位置。
2、/li: 找到ul下边的直接子元素li,不包含后代元素。
3、 [@class="one"]: 给标签设置属性,用于过滤和筛选

4、xpath()返回的是一个列表:比如

one_li = obj.xpath('//ul/li[@class="one"]')[0]


获取one_li的文本内容:

one_li = obj.xpath('//ul/li[@class="one"]')[0]
print(one_li.xpath('text()')[0])

# 上述写法的合写方式
print(obj.xpath('//ul/li[@class="one"]/text()')[0])
 获取所有li的文本内容:
all_li = obj.xpath('//ul/li/text()')

获取所有li的文本内容以及class属性的值:

all_li = obj.xpath('//ul/li')
for li in all_li:
    class_value = li.xpath('@class')[0]
    text_value = li.xpath('text()')[0]
    print(class_value, text_value)


获取div标签内部的所有文本:

注意://text():获取所有后代元素的文本内容
           /text():获取直接子元素的文本,不包含后代元素

print(obj.xpath('//div[@id="inner"]//text()'))
获取ul中第一个li  [1]([1]:第一个li)的文本:
print(obj.xpath('//ul/li[1]/text()'))
查找类名中包含four的li的文本内容:
print(obj.xpath('//ul/li[contains(@class, "four")]/text()'))




http://www.niftyadmin.cn/n/1357040.html

相关文章

爬虫实例爬取微信公众号文章

网站&#xff1a;http://weixin.sogou.com/weixin?type2&querypython&page1 实例中含有IP代理池&#xff01;import requests, re, pymongo, timefrom fake_useragent import UserAgentfrom urllib.parse import urlencode from pyquery import PyQuery from requests…

PySpider爬虫框架介绍与phantomjs的安装

pyspider的介绍 PySpider是一种爬虫框架&#xff0c;基于PyQuery实现的。 一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写&#xff0c;分布式架构&#xff0c;支持多种数据库后端&#xff0c;强大的WebUI支持脚本编辑器&#xff0c; 优势&#xff…

爬虫保存cookies时重要的两个参数(ignore_discard和ignore_expires)的作用

代码如下&#xff1a;&#xff08;由于临时做的实例采用登录云打码平台的cookies&#xff09;import requests from lxml.html import etree from fake_useragent import UserAgent from http.cookiejar import LWPCookieJar from ydm import shibiesession requests.Session(…

pyspider使用实例

&#xff08;注意&#xff1a;实例为爬取起点中文网 >地址&#xff1a;https://www.qidian.com/all&#xff09; 创建项目&#xff1a;创建后项目内容&#xff1a;实例操作步骤&#xff1a;数据库内容如下&#xff1a;使用mongodb数据库:代码如下&#xff1a; #!/usr/bin/en…

Redis 优缺点、安装与使用以及可视化工具RedisDesktopManager的安装使用(操作是爬取代理ip)

介绍 Redis&#xff1a;Redis是一个基于内存的高性能key-value数据库。 Redis数据支持类型&#xff1a;支持多种数据类型——string、list、hash(散列)、sets&#xff08;集合&#xff09;、sorted set(有序集合) Redis优点&#xff1a; 1.单线程&#xff0c;利用Redis队列技术…

CSS选择器——cssSelector定位方式详解

基本css选择器CSS选择器中&#xff0c;最常用的选择器如下&#xff1a; 选择器描述举例*通配选择器&#xff0c;选择所有的元素*<type>选择特定类型的元素&#xff0c;支持基本HTML标签h1.<class>选择具有特定class的元素。.class1<type>.<class>特定类…

global的作用以及使用方法

global的作用在编写程序的时候&#xff0c;如果想为一个在函数外的变量重新赋值&#xff0c;并且这个变量会作用于许多函数中时&#xff0c;就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务&#xff0c;也就是说没有用global语句的情况下&…

selenium框架安装与使用(基本操作)——爬虫(selenium测试框架)

1、安装selenium&#xff1a; 2、下载浏览器驱动并放在python环境中&#xff08;此处为火狐浏览器&#xff09; 下载的推荐地址&#xff1a;https://blog.csdn.net/zhu940923/article/details/78105744 selenium测试框架在爬虫中的应用 网页中通过js渲染的数据&#xff0c;爬虫…