当前位置 博文首页 > python使用XPath解析数据爬取起点小说网数据

    python使用XPath解析数据爬取起点小说网数据

    作者:互联网老辛 时间:2021-06-27 17:44

    1. xpath 的介绍

    xpath是一门在XML文档中查找信息的语言

    优点:

    • 可以在xml中找信息
    • 支持HTML的查找
    • 可以通过元素和属性进行导航

    但是Xpath需要依赖xml的库,所以我们需要去安装lxml的库。

    安装lxml库

    我们先要安装lxml的库,直接在pycharm里安装即可:

    XML的树形结构:

    元素-元素-属性-文本

    使用XPath选取节点:

    • nodename: 选取此节点的所有节点
    • /从根节点选择
    • // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
    • . 选择当前节点
    • .. 选择当前节点的父节点(此处是两个点,浏览器默认显示3个..)
    • /text() 获取当前路径下的文本内容
    • /@xxx 提取当前路径下标签的属性值

    选取节点的表达式举例:

    2. 爬取起点小说网

    在浏览器中获取书名和作者测试

    在谷歌里安装一个xpath的插件

    在html中查找book-mid-info

    我们要获取小说的名称: 也就是 //div[@class='book-mid-info']/h4/a/txt()

    再加一个获取作者:

    使用xpath获取起点小说网的数据

    # 作者:互联网老辛
    # 开发时间:2021/4/8/0008 8:24
    
    import requests
    from lxml import etree
    url="https://www.qidian.com/rank/yuepiao"
    headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
    #发送请求
    resp=requests.get(url,headers)
    e=etree.HTML(resp.text) #类型转换,把str转变为class 'lxml.etree._ELement
    print(type(e))
    names=e.xpath('//div[@class="book-mid-info"]/h4/a/text()')
    authors=e.xpath('//p[@class="author"]/a[1]/text()')
    print(names)
    print(authors)
    #名称和作者对应
    for name,authors in zip(names,authors):
        print(name,":",authors)
    
    js
    下一篇:没有了