Xpath在Xpath地址后面加上/text()后返回的值是[]怎么办

Xpath在Xpath地址后面加上/text()后返回的值是[]怎么办

这个是url地址https://www.zbj.com/search/service/?kw=saas&r=2&l=0

import requests
from lxml import etree
url = 'https://www.zbj.com/search/service/?kw=saas&r=2&l=0'
resp = requests.get(url)
html = etree.HTML(resp.text)
divs = html.xpath('//*[@id="__layout"]/div/div[3]/div/div[4]/div/div[2]/div[1]/div[1]/text()')
print(divs)

这样就返回[]

img

如果把后面的/text()去掉可以就有结果了

img

在这个坑里挣扎一天了,网上搜到的很多方法也试了,都没用,可不可以指点一下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7460213
  • 你也可以参考下这篇文章:xpath使用text()失效
  • 您还可以看一下 CSDN就业班老师的爬虫试听课课程中的 XPath语法与案例小节, 巩固相关知识点
  • 除此之外, 这篇博客: 解析彼岸图网图片—xpath简单应用中的 使用xpath解析图片的url及名称 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    请求网络页面,对页面进行解析,找到对应图片的url
    支持用户自定义图片类型

    在此也解决了一个中文乱码的问题

    手动设置响应数据的编码格式(处理中文乱码)
    response.encoding = ‘utf-8’

    针对乱码的地方重新编码
    xxx_name.encode(‘iso-8859-1’).decode(‘gbk’)

    #!/usr/bin/env python
    # encoding: utf-8
    
    """
    @file: xpath2.py
    @time: 2020/2/28 11:14
    """
    # 彼岸图网
    import requests
    from lxml import etree
    import os
    import pypinyin
    
    
    # 不带声调的(style=pypinyin.NORMAL)
    def pinyin(word):
        s = ''
        for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
            s += ''.join(i)
        return s
    
    
    def bi_an():
        word = input('请输入所要下载的图片类型:')
    
        # 创建一个文件夹
        file = './' + word
        if not os.path.exists(file):
            os.mkdir(file)
    
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/80.0.3987.116 Safari/537.36'
        }
        url_p = "http://pic.netbian.com/4k%s/"
        url = format(url_p % pinyin(word=word))
        response = requests.get(url=url, headers=headers)
        # 手动设置响应数据的编码格式(处理中文乱码)
        # response.encoding = 'utf-8'
        page_text = response.text
    
        # 数据解析:src属性值 alt属性值
        tree = etree.HTML(page_text)
        li_list = tree.xpath('//div[@class="slist"]/ul/li')
    
        for li in li_list:
            img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]
            img_name = li.xpath('./a/img/@alt')[0] + '.jpg'
    
            # 通用处理中文乱码的解决方案
            img_name = img_name.encode('iso-8859-1').decode('gbk')
    
            # print(img_name, img_src)
            # 请求图片并进行持久化存储
            img_data = requests.get(url=img_src, headers=headers).content
            img_path = file + '/' + img_name
            with open(img_path, 'wb') as fp:
                fp.write(img_data)
                print(img_name, "下载成功!!!")
    
    
    if __name__ == '__main__':
        bi_an()
    
    

    现在只是懂了点爬虫皮毛,每次都做个记录,努力成为一名真正的爬虫工程师😊

    请各路大神们不吝赐教


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^