忆昔231 2023-07-29 21:14 采纳率: 50%
浏览 4
已结题

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

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-30 08:20
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: 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()
      
      

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

      请各路大神们不吝赐教


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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月29日
  • 创建了问题 7月29日